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