我有一种情况,我正在处理最初从事件触发的线程中的一些数据,但它需要等到主线程中发生某些事情才能继续 - 问题是可能有任意数量的这些数据同时运行。真正的基本示例:
事件触发 -> 方法设置为在自己的线程上在后台运行 -> 使用主线程的发送数据方法发送数据 -> 等待接收该数据的 ACK -> 在主线程上设置 WaitHandle -> 工作线程然后将发送下一组数据 -> 重复 -> 当所有数据都已发送并确认后退出线程。
目前我有一个 AutoResetEvent ,每次收到 ACK 时都会设置 - 并且正在运行的工作线程会监听它 - 但如果碰巧有 10 个工作线程同时运行,并且它们都在监听它 -它违背了目的。
我需要生成工作线程,并让它侦听(WaitOne)以设置/重置特定的 WaitHandle,并仅基于此继续。
完成这样的事情的最佳方法是什么?以某种方式创建一个 WaitHandles 数组并让工作线程侦听其索引的 AutoResetEvent?