我想知道如何在运行时安全地更改线程应该等待的 EventWaitHandle。
例如,假设有两个线程(A 和 C)通过 EventWaitHandles 同步。A 循环地完成它的工作,C 等待直到它收到来自 A 的通知,它可以开始做它的工作(例如,通过 AutoResetEvent)。图案是ACAC...
稍后启动一个新线程(B)(例如通过用户操作),它的工作应该在两个预先存在的线程之间以这种方式执行:A 完成它的工作,然后向 B 发出信号,一旦 B 完成它就向 C 发出信号。现在模式是ABCABC...
因此,在线程 C 等待与 A 共享的 EventWaitHandle 之前,应该有一个安全机制使 C 等待与 B 共享的另一个 EventWaitHandle。在我看来,棘手的部分是替换 C 使用的 EventWaitHandle,因为一旦这个完成后,我应该能够轻松启动 B,它将使用 EventWaitHandle 等待 A 作业,并使用 EventWaitHandle 发出 C 作业信号。该机制还应该提供一种安全卸载线程 B 并返回到只有线程 A 和 C 正在工作的初始情况的方法。
使用 EventWaitHandle 是否有安全的方法来完成此任务?如果没有,任何其他建议将不胜感激。