我的程序与别人的程序(我无法控制)之间,如何同时读写文件而不冲突?

hslow 2008-07-16 11:47:04
  别人的程序对文件进行定时写操作,大概5秒写一次,写完会关闭文件。我的程序对该文件进行读操作,读完也会关闭文件。
  我想问:在我打开文件前,如何判断别人程序正在对文件进行写操作,从而推迟打开以避免冲突??难道不停尝试打开该文件直到成功为止??
  请赐教!
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nextsea 2008-07-17
  • 打赏
  • 举报
回复
用文件监视器.

private static void FileWatch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = System.Environment.CurrentDirectory; //路径
watcher.NotifyFilter = NotifyFilters.LastWrite; //监视方式,这里选择的是最后一次写入
watcher.Filter = "要监视的文件.txt";
watcher.Changed += new FileSystemEventHandler(watcher_Changed); //触发事件
watcher.EnableRaisingEvents = true;
}

static void watcher_Changed(object sender, FileSystemEventArgs e)
{
//写入读操作

}
rangeon 2008-07-17
  • 打赏
  • 举报
回复
好像也只有 try and try
bwangel 2008-07-17
  • 打赏
  • 举报
回复
用Timer控件,每隔一段时间(比如0.5秒)在后台轮询一次文件的状态,同时还可以做别的工作.
如果文件打开对程序继续运行是必要的条件,那就只有等啰,不过应该不会等多久的.写文件只是一瞬间的事.
hslow 2008-07-17
  • 打赏
  • 举报
回复
谢谢楼上各位
发表于 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nextsea 的回复:]
用文件监视器.

private static void FileWatch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = System.Environment.CurrentDirectory; //路径
watcher.NotifyFilter = NotifyFilters.LastWrite; //监视方式,这里选择的是最后一次写入
watcher.Filter = "要监视的文件.txt";
watcher.Changed += new …
[/Quote]
自己保存后也会触发事件

110,021

社区成员

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

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

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