1

我想以这种方式使用它

detectedFile = Wait(directory, filter);

最原始的方法是使用循环,比如

while(true)
{
   var found = Directory.EnumerateFiles(directory, filter).FirstOrDefault();
   if(found != null) return found;
   Thread.Sleep(1000);
}

有一个更好的方法吗?

4

2 回答 2

1

如果您想阻止您的线程但搜索文件是否存在,我将FileSystemWatcher按照 Blorgbeard 在单独线程上的建议使用,并使用类似这样的东西来阻止您的主线程...

 ManualResetEventSlim fileDetected = new ManualResetEventSlim();
 fileDetected.Reset(); // sets or makes sure signal is false
 fileDetected.Wait();  // waits for signal to be set true
 fileDetected.Set();   // sets signal to true
于 2013-06-06T09:36:27.443 回答
0

使用FileSystemWatcher实例并使用 WaitForChanged 方法,将WatcherChangeTypes .Created 传递给它。

于 2013-06-06T10:13:10.447 回答