C#將文件寫入內存後調用

Dear SQL(燊) 2014-06-30 03:01:33
大家好!當我應用程序要用到一個文件時,先到內存中找
1.如果找到讀取內容直接調用
2.如果沒有找到,先將文件加載到內存(是持久的),再調用加載的內容
...全文
142 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 11 楼 chenshanliang 的回复:
[quote=引用 8 楼 Z65443344 的回复:] [quote=引用 6 楼 chenshanliang 的回复:] [quote=引用 4 楼 stonefeng 的回复:] 如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
這樣好像不是很好, 我這個應用是在IIS服務器上的,只要其中的一個用戶將文件寫入內存,下一次調用時直接從內存在讀取 ,這樣提高了讀取速度及並發性[/quote] 定义成全局静态变量,就每个用户都可见了.[/quote]
引用 8 楼 Z65443344 的回复:
[quote=引用 6 楼 chenshanliang 的回复:] [quote=引用 4 楼 stonefeng 的回复:] 如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
這樣好像不是很好, 我這個應用是在IIS服務器上的,只要其中的一個用戶將文件寫入內存,下一次調用時直接從內存在讀取 ,這樣提高了讀取速度及並發性[/quote] 定义成全局静态变量,就每个用户都可见了.[/quote] 不行,有幾千個文件,但是每個都很小 如放在幾個全局静态变量中,維護起來麻煩[/quote] 谁让你用string型的变量了,加个LIST,可以动态修改长度,ADD或REMOVE
Dear SQL(燊) 2014-06-30
  • 打赏
  • 举报
回复
引用 10 楼 Z65443344 的回复:
但是你有没有想过一个问题 你的IIS是一直在运行的,非必要不重启 所有文件(用得着的和用不着的)都放内存里,你就不怕内存溢出了 还是使用WINDOWS自己的内存管理机制更靠谱些.
不怕的,服務器內存有幾十G,所有文件只2,3G 但也是管理內存,如果有很久沒有用的文件就從內存中OUT
Dear SQL(燊) 2014-06-30
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
[quote=引用 6 楼 chenshanliang 的回复:] [quote=引用 4 楼 stonefeng 的回复:] 如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
這樣好像不是很好, 我這個應用是在IIS服務器上的,只要其中的一個用戶將文件寫入內存,下一次調用時直接從內存在讀取 ,這樣提高了讀取速度及並發性[/quote] 定义成全局静态变量,就每个用户都可见了.[/quote]
引用 8 楼 Z65443344 的回复:
[quote=引用 6 楼 chenshanliang 的回复:] [quote=引用 4 楼 stonefeng 的回复:] 如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
這樣好像不是很好, 我這個應用是在IIS服務器上的,只要其中的一個用戶將文件寫入內存,下一次調用時直接從內存在讀取 ,這樣提高了讀取速度及並發性[/quote] 定义成全局静态变量,就每个用户都可见了.[/quote] 不行,有幾千個文件,但是每個都很小 如放在幾個全局静态变量中,維護起來麻煩
於黾 2014-06-30
  • 打赏
  • 举报
回复
但是你有没有想过一个问题 你的IIS是一直在运行的,非必要不重启 所有文件(用得着的和用不着的)都放内存里,你就不怕内存溢出了 还是使用WINDOWS自己的内存管理机制更靠谱些.
jimil 2014-06-30
  • 打赏
  • 举报
回复
只一个文件? 定义个全局变量事先加载就行了 多用户的全局变量?没搞过,但搞个WEBSERVICE输出文件绝对就是全局了。
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 6 楼 chenshanliang 的回复:
[quote=引用 4 楼 stonefeng 的回复:] 如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
這樣好像不是很好, 我這個應用是在IIS服務器上的,只要其中的一個用戶將文件寫入內存,下一次調用時直接從內存在讀取 ,這樣提高了讀取速度及並發性[/quote] 定义成全局静态变量,就每个用户都可见了.
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 3 楼 chenshanliang 的回复:
多用戶系統中的LIST不能所有用戶都可以調用吧?
多用户系统?你的程序到底要给谁用啊! 如果是桌面程序,一个用户打开了你的程序,另一个用户根本看不到界面,只在进程里能看到. 如果是作为服务,对于每个用户来说都是一样的.
Dear SQL(燊) 2014-06-30
  • 打赏
  • 举报
回复
引用 4 楼 stonefeng 的回复:
如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
這樣好像不是很好, 我這個應用是在IIS服務器上的,只要其中的一個用戶將文件寫入內存,下一次調用時直接從內存在讀取 ,這樣提高了讀取速度及並發性
疯癫行者 2014-06-30
  • 打赏
  • 举报
回复
补充:装入新文件的时候,那些已经装入的文件可以同时开放。
疯癫行者 2014-06-30
  • 打赏
  • 举报
回复
如果每个用户都只是读取的话,可以同时读。但与装入的线程要同步一下,要确保在完整装入之前不能开放给其他线程读取。
Dear SQL(燊) 2014-06-30
  • 打赏
  • 举报
回复
多用戶系統中的LIST不能所有用戶都可以調用吧?
疯癫行者 2014-06-30
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
非要自己做,弄个LIST把文件路径和文件流都放里面,使用前遍历一下.
这个可以。
於黾 2014-06-30
  • 打赏
  • 举报
回复
这样做有什么意义么... 系统会帮你管理内存,如果你要访问的文件已经在内存中,系统不会再从硬盘读取而是直接从内存中加载. 当然长时间不使用会被系统回收. 所以你在第一次打开个WORD的时候通常比较慢,关闭再打开就快很多. 非要自己做,弄个LIST把文件路径和文件流都放里面,使用前遍历一下.

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧