【发布时间】:2010-07-12 11:48:49
【问题描述】:
在这段代码中,我想使用 AutoResetEvent 和 bool 变量暂停/恢复线程。 如果blocked == true,是否可以在每次不测试的情况下暂停(在Work()的for循环中)? “阻塞”变量的测试也需要锁定,我认为这很耗时。
class MyClass
{
AutoResetEvent wait_handle = new AutoResetEvent();
bool blocked = false;
void Start()
{
Thread thread = new Thread(Work);
thread.Start();
}
void Pause()
{
blocked = true;
}
void Resume()
{
blocked = false;
wait_handle.Set();
}
private void Work()
{
for(int i = 0; i < 1000000; i++)
{
if(blocked)
wait_handle.WaitOne();
Console.WriteLine(i);
}
}
}
【问题讨论】:
标签: c# .net multithreading