Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:使用FileSystemWatcher监视复制或移动的文件_C#_.net_Filesystems_Filesystemwatcher - Fatal编程技术网

C#:使用FileSystemWatcher监视复制或移动的文件

C#:使用FileSystemWatcher监视复制或移动的文件,c#,.net,filesystems,filesystemwatcher,C#,.net,Filesystems,Filesystemwatcher,我在这里和网络上遇到过几种“解决方案”,但似乎都不符合要求 我想做的是让一个应用程序监视文件夹中的新文件(通过创建、移动或复制),并对这些对象执行操作。在这种情况下,我转向FileSystemWatcher类来执行此操作 问题是file FileSystemWatcher.Created事件是在创建整个文件之前触发的(最明显的是通过一个大文件的副本) 有没有办法让此事件在文件创建结束时而不是开始时触发?我尝试了FileSystemWatcher.NofityFilter属性的各种组合,但没有成功

我在这里和网络上遇到过几种“解决方案”,但似乎都不符合要求

我想做的是让一个应用程序监视文件夹中的新文件(通过创建、移动或复制),并对这些对象执行操作。在这种情况下,我转向FileSystemWatcher类来执行此操作

问题是file FileSystemWatcher.Created事件是在创建整个文件之前触发的(最明显的是通过一个大文件的副本)

有没有办法让此事件在文件创建结束时而不是开始时触发?我尝试了FileSystemWatcher.NofityFilter属性的各种组合,但没有成功


提前感谢!:)

嗯,这是一个有趣的问题。我在查看大文件时从未使用过该对象。进行了一些搜索,似乎一种解决方案是同时监视已更改的事件。因为一旦文件完成复制(在启动创建后),也会引发一个更改的事件(导致文件大小增加)


我在这里读到的更多细节:

针对这种情况,我使用了几种解决方案

  • 如果您可以与文件的创建者合作,并对文件使用重命名方案。例如,在创建文件时将文件创建为\uuu Name\uu,并在过程结束时将其重命名为Name,事件将触发,您将拥有一个完整的文件

  • 当触发器触发时,请检查是否可以获得文件的独占只读锁。如果可以,则已完成对文件的写入操作。(我在另一个问题中写了一些关于这一点的内容)


  • 您可能会将#2之类的东西集成到更改的事件中,然后您就会得到结果。

    您需要跟踪文件创建后的关闭情况,我怀疑使用FileSystemWatcher是否可能。
    如果您找不到FileSystemWatcher的解决方案,请查看我们的产品,它可以让您实时跟踪所有操作

    我知道,我要告诉你的看起来并不优雅。我还必须监控来自不同地方的文件,其中一些文件很大,一些文件很小。我们发现,FileSystemWatcher在这方面不可靠。如果您想100%确定,可以使用Timer类及其已用事件偶尔检查一次。

    但不幸的是,我没有找到更优雅的解决方案:((至少现在,我真的很想知道)嘿,Boris,它在哪些方面不可靠?我们使用FileSystemWatcher监视其他系统生成的文件。文件必须在特定时间生成,并使用预定义的名称。如果文件未在其时间段内生成,监视器将发送警报。FileSystemWatcher多次“丢失”或者对文件的修改导致了许多“虚假”警报。我在网上搜索,发现这个问题对其他人来说也是很常见的。注意:尤金是撰写该报告的公司的首席技术官CallbackFilter@ChristopherPfohl感谢您指向旧帖子-我已根据SO的新规则对其进行了更新。谢谢:)对很多人来说,披露信息使决定使用你的产品变得更容易。