首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileSystemWatcher

FileSystemWatcher
EN

Stack Overflow用户
提问于 2010-02-23 19:23:59
回答 3查看 847关注 0票数 0

我需要写一些代码,将复制文件从目录时,文件将发生变化。

我知道C/C++ (稍微有点:]),但我从未使用过.net。我觉得很棒吗?首先,我使用FSW创建新线程,然后当更改发生时,创建下一个将复制文件的线程?

EN

回答 3

Stack Overflow用户

发布于 2010-02-23 20:30:34

如果您熟悉C/C++,那么您应该使用ReadDirectoryChangesW()。FileSystemWatcher是这个API函数的一个简单的包装器。但不可否认的是,它更容易上手。here.提供了示例SDK代码。

FSW/RDC的常见问题是,当您收到通知时无法访问该文件,因为正在写入该文件的应用程序对其进行了锁定。您需要一个线程安全队列来存储通知,该队列由定期尝试执行所需操作的另一个线程清空。在处理通知时,这也是一种健康的方法,您将希望花费尽可能少的时间,以避免创建大型通知缓冲区。它们是昂贵的系统资源。

票数 2
EN

Stack Overflow用户

发布于 2010-02-23 19:26:52

您所描述的一种模式是让一个线程使用FileSystemWatcher监视文件,并将一个事件(或文件)插入到队列中,而另一个线程读取队列并操作事件。

票数 1
EN

Stack Overflow用户

发布于 2010-02-23 19:32:42

您走上了正确的道路,因为文件系统监视是操作系统的一项功能。您可以在.NET中使用它,也可以直接在原生C++中使用。.NET提供了一个更简单的编程模型。

请注意,根据您的需求,您可以使用Robocopy (至少包含在Vista中),它可以监视目录并自动复制文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2317623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档