我正在使用 FileSystemWatcher 来监视多个文件夹中新添加的文件。 FileSystemWatcher 是为 N 个文件夹/目录创建的,以便分别监视。 它在开始时工作正常,但一段时间后它不会引发任何事件。 我在这里错过了什么吗?非常感谢任何意见/帮助。
// Set up FileSystemWatchers for the specific subdirectories.
foreach (string subdirectory in subdirectoriesToWatch)
{
string subdirectoryPath = Path.Combine(rootDirectory, subdirectory);
FileSystemWatcher subdirectoryWatcher = CreateWatcher(subdirectoryPath, true);
subdirectoryWatcher.Created += (sender, e) =>
{
Console.WriteLine($"File created in {subdirectory}: {e.Name}");
};
}
我还增加了 InternalBufferSize,它将根据提供的文件掩码来过滤属性。
我怀疑这是因为您的
FileSystemWatcher
实例正在被收集。将您的代码更改为:
foreach (string subdirectory in subdirectoriesToWatch)
{
string subdirectoryPath = Path.Combine(rootDirectory, subdirectory);
FileSystemWatcher subdirectoryWatcher = CreateWatcher(subdirectoryPath, true);
GC.KeepAlive(subdirectoryWatcher);
subdirectoryWatcher.Created += (sender, e) =>
{
Console.WriteLine($"File created in {subdirectory}: {e.Name}");
};
}