如何创建阻止文件被检测到的方法?

时间:2013-06-06 09:28:06

标签: c# .net filesystems

我想以这种方式使用它

detectedFile = Wait(directory, filter);

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

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

有更好的方法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用FileSystemWatcher实例并使用WaitForChanged方法,传递它WatcherChangeTypes。创建。