使用两个WaitOne()并继续,如果其中一个是Set()

时间:2017-03-28 08:23:50

标签: c# multithreading waitone

  • 我有一个负责 预定 文件传输的主题。
  • XML文件中提到了传输 计划 的文件,用户可以随时更改这些文件。
  • 我创建了一个FileSystemWatcher,它负责继续观察XML文件,并通知XML文件是否有任何变化(以便我们可以获得新的计划值)。这个FileSystemWatcher通过设置名为AutoResetEvent的{​​{1}}来通知。

问题:完成预定的文件传输后,我想将该线程置于等待状态,直到满足以下两个条件之一:

(a)中。到达下一个文件传输计划日期

(b)中。或者_waitTillXmlChanges已通知.XML文件中的更改

如何让我的文件传输线程等待上述两个条件(两个FileSystemWatcher等待)并继续,如果其中任何一个是AutoResetEvent

1 个答案:

答案 0 :(得分:3)

您可以使用WaitHandle.WaitAny(handles),如下所述:https://msdn.microsoft.com/en-us/library/tdykks7z(v=vs.110).aspx

int eventNr = WaitHandle.WaitAny(new WaitHandle[]{autoResetEvent1, autoResetEvent2});