У меня есть объект в рабочем потоке, который я могу дать инструкции прекратить работу. Я могу реализовать это с помощью bool или AutoResetEvent:
булева:
private volatile bool _isRunning;
public void Run() {
while (_isRunning)
{
doWork();
Thread.Sleep(1000);
}
}
AutoResetEvent:
private AutoResetEvent _stop;
public void Run() {
do {
doWork();
} while (!_stop.WaitOne(1000));
}
Затем метод Stop()
установил _isRunning
в значение false или вызовет _stop.Set()
.
Кроме того, решение с AutoResetEvent может немного ускориться, есть ли разница между этими методами? Является ли это "лучше", чем другой?