FileSystemWatcher 移动被被监控文件

有新文件生成则移动到其它文件夹,但是对被监控文件的操作都会弹出异常:另一进程正在使用文件,因此该进程无法访问此文件。
这个和文件实时备份原理是一样的,复制也行
如何才能解决文件被占用的问题呢
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-10-18
  • 打赏
  • 举报
回复
当 FileSystemWatcher 通知你有变化时,你记录下文件名,并启动定时器 不断通知你,就不断初始化定时器 当定时器通知你时间到了的时候,你才去操作文件
引用 2 楼 xuzuning 的回复:
FileSystemWatcher 监控的是变化 而正在变化的文件,是不能进行其他操作的 你需要等到变化停止后才能对他操作,但此时 FileSystemWatcher 又不能告诉你哪个是变化过的了
就是这么矛盾,有没有办法解决呢
引用 4 楼 stherix 的回复:
一个文件刚被建立 你就试图移走它 但是这时候很可能对方还在写这个文件 自然就出现了访问错误
复制也不行
引用 1 楼 FoxDave 的回复:
要么是文件正在生成中,你的程序无法访问;要么是你代码有问题
就是在Created事件里面复制,没有其它操作了,就两行代码
引用 8 楼 xuzuning 的回复:
当 FileSystemWatcher 通知你有变化时,你记录下文件名,并启动定时器 不断通知你,就不断初始化定时器 当定时器通知你时间到了的时候,你才去操作文件
非常感谢
stherix 2016-10-18
  • 打赏
  • 举报
回复
一个文件刚被建立 你就试图移走它 但是这时候很可能对方还在写这个文件 自然就出现了访问错误
syeerzy 2016-10-18
  • 打赏
  • 举报
回复
一般是监听错事件了.
xuzuning 2016-10-18
  • 打赏
  • 举报
回复
FileSystemWatcher 监控的是变化 而正在变化的文件,是不能进行其他操作的 你需要等到变化停止后才能对他操作,但此时 FileSystemWatcher 又不能告诉你哪个是变化过的了
Justin-Liu 2016-10-18
  • 打赏
  • 举报
回复
要么是文件正在生成中,你的程序无法访问;要么是你代码有问题

110,535

社区成员

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

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

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