2013-06-06 17 views
1

我想用这种方式如何创建方法,直到检测到文件为止?

detectedFile = Wait(directory, filter); 

最原始的办法是使用循环,像

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

有没有更好的方式来做到这一点?

+2

你可以使用FileSystemWatcher而不是阻塞? http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx – Blorgbeard

+0

其实,我想阻止 –

+0

你仍然可以使用'FileSystemWatcher.OnCreated'来放置触发器? – Bolu

回答

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 
相关问题