我正在尝试创建以下效果:
我有x个线程同时运行,我希望它们在计时器关闭时停止。
我唯一能想到的就是拥有一个共享的布尔值,该值随时间的推移而变化。有没有人知道如何使用线程计时器和AutoResetEvent?
我很难找到如何使用Autoreset事件...
你知道一种更好的方法来实现这种效果吗?
流程怎么样?
答案 0 :(得分:0)
不是共享一个布尔值,而是使用ManualResetEvent并让每个线程等待它。
private static void ThreadDelegate(object state)
{
object[] stateArray = (object[])state;
ManualResetEvent resetEvent = (ManualResetEvent)stateArray[0];
//Do some work.
...
resetEvent.WaitOne();
}
这将阻止线程,直到你调用resetEvent.Set();
我想这个问题的最佳答案实际上取决于你如何构建你的代码。我建议的内容取决于//Do some work
位执行某些操作,例如创建Timer
并在某个时间间隔内调用回调。