C#下多进程共同读写同一文件

最近遇到这样一个需求,用C#写一个界面,在界面上实时输出一个日志文件。

实时检测文件变化,以便刷新界面显示,可以用FileSystemWatcher组件,响应Changed事件即可。

 

关键是在Changed事件响应函数中,如果以传统只读模式打开文件句柄,老是会提示: 文件正由另一进程使用,因此该进程无法访问该文件。

最后发现构造文件流时除了常见的FileMode外,还可以指定FileShare参数,实现控制其他 System.IO.FileStream 对象对同一文件的共享操作,代码如下:

1 FileStream stream = new FileStream(Directory.GetCurrentDirectory() + "\\log\\log", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

2 StreamReader reader = new StreamReader(stream, Encoding.UTF8);

3 String value = reader.ReadToEnd();

 

你可能感兴趣的:(多进程)