gpt4 book ai didi

c# - FileSystemWatcher 不会在一段时间后触发

转载 作者:行者123 更新时间:2023-11-30 19:09:58 24 4
gpt4 key购买 nike

我有以下代码用于监视文本文件的目录,该目录每天两次获取新文件,该代码在一段时间内工作正常但之后它停止触发 OnCreated 事件...

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public static void Run()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"c:\users\documents\";

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;

watcher.Filter = "*.txt";

// Add event handlers.
watcher.Created += new FileSystemEventHandler(OnCreated);

// Begin watching.
watcher.EnableRaisingEvents = true;

// Wait for the user to quit the program.
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}

private static void OnCreated(object source, FileSystemEventArgs e)
{
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}

无法找出问题。

另外,我想知道一个万无一失的替代方案(如果有的话),因为我觉得这个不可靠..

最佳答案

因为 Run 方法完成后,watcher 有资格进行垃圾回收。这意味着一段时间后 watcher 将被收集并且显然将停止引发事件。

要解决,请在外部范围内保留观察者的引用:

private static FileSystemWatcher watcher;

public static void Run()
{
watcher = new FileSystemWatcher();
...
}

关于c# - FileSystemWatcher 不会在一段时间后触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20956844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com