0

I need to write some code that will copy file from directory when the file will change.

I know C/C++ (little bit :]) but I never used .net. Am I thinkig good? First I create new thread with FSW and then when change will occur create next thread that will copy file?

4

3 回答 3

2

如果您熟悉 C/C++,那么您应该使用 ReadDirectoryChangesW()。FileSystemWatcher 是这个 API 函数的一个瘦包装器。但不可否认,更容易上手。示例 SDK 代码可在此处获得。

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

于 2010-02-23T12:30:33.673 回答
1

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

于 2010-02-23T11:26:52.407 回答
0

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

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

于 2010-02-23T11:32:41.760 回答