Используйте два 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});