В этом коде я хочу приостановить/возобновить поток, используя переменную AutoResetEvent и bool. Можно ли приостановить без проверки каждый раз (в цикле работы()), если заблокировано == true? Тестирование «заблокированной» переменной требует блокировки, и я думаю, что это занимает много времени.Pause/Resume thread whith AutoResetEvent
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);
}
}
}