Используйте два WaitOne() и Continue, если одним из них является Set()

  • У меня есть ветка, которая отвечает за запланированную передачу файлов.
  • Расписание передачи файлов упоминается в файле XML, который может быть изменен пользователем в любое время.
  • Я создал FileSystemWatcher, который отвечает за отслеживание XML-файла и уведомление, если есть какие-либо изменения в XML-файле (чтобы мы могли получить новое значение расписания). это FileSystemWatcher уведомляет, установив AutoResetEvent называется _waitTillXmlChanges,

Вопрос: После запланированной передачи файла я хочу перевести этот поток в состояние ожидания, пока не будет выполнено одно из следующих двух условий:

(А). Либо достигнута следующая дата расписания передачи файлов

(Б). Или FileSystemWatcher уведомил об изменении файла.XML

Как я могу сделать поток передачи файлов ожидающим двух вышеуказанных условий (два AutoResetEvent в ожидании) и продолжить, если кто-то из них Set() ?

1 ответ

Ты можешь использовать WaitHandle.WaitAny(handles), как описано здесь: https://msdn.microsoft.com/en-us/library/tdykks7z(v=vs.110).aspx

int eventNr = WaitHandle.WaitAny(new WaitHandle[]{autoResetEvent1, autoResetEvent2});
Другие вопросы по тегам