2014-02-07 1 views
1

Я хотел бы знать, как сделать что-то, что будет работать так. Начиная с Java 1.7 я мог бы использовать WatchService, но как это сделать на C#? Я хотел бы сделать этот метод блокирующим, а не обычным событием, поэтому он ждет бесконечно, пока не появится новый файл.Метод блокировки, ожидающий добавления файла в каталог

while(isANewFileInDirectory(path)){ 
    doSomeCode(); 
} 

EDIT:

 FileSystemWatcher watcher = new FileSystemWatcher(".\\Screenshots"); 
        watcher.Created += watcher_Created; 

    void watcher_Created(object sender, FileSystemEventArgs e) { 
      System.Diagnostics.Debug.WriteLine("fasuigfasuigf423432FSDFSAasuigf"); 
      sendResponse(e.FullPath); 
     } 
+2

Проверьте класс FileSystemWatcher: http://msdn.microsoft.com/de-de/library/system.io.filesystemwatcher(v=vs.110).aspx – RononDex

+0

Примечание. Он не будет контролировать подпапку. Для запуска не используйте относительные папки. Блокировка при ожидании, когда переменная задана событием, понятна, не так ли? – ZoolWay

+0

Также вы не забыли 'watcher.EnableRaisingEvents = true;'? – ZoolWay

ответ

3

ли его блокировать? Вы можете использовать FileWatcher ... http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

Edit: вот пример:

namespace FileWatchTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      FileSystemWatcher watcher = new FileSystemWatcher(@"c:\temp"); 
      watcher.EnableRaisingEvents = true; 
      watcher.Created += (obj, arg) => Console.WriteLine("File {0} created", arg.Name); 
      watcher.Deleted += (obj, arg) => Console.WriteLine("File {0} deleted", arg.Name); 
      watcher.Changed += (obj, arg) => Console.WriteLine("File {0} changed", arg.Name); 

      Console.ReadLine(); 
     } 
    } 
} 

Вставьте его в консольное приложение, и вы должны увидеть обновления (очевидно - изменить путь к папке, которую вы хотите часы ...)

+0

Я сделал это правильно. Я не получаю вывод, когда файл копируется в этот каталог. Посмотрите на EDIT. –

+0

@WojciechKetrzynski Просто предоставил вам пример ... – Jay

1

ищет FileSystemWatcher Class. MSDN имеет подробную информацию и пример кода. here

+0

Я сделал это правильно. Я не получаю вывод, когда файл копируется в этот каталог. Посмотрите на EDIT. –

+0

Для @ "C: \" нет реакции. –

+1

@Wojciech я попробовал с примером кода Джей. он работает хорошо. –