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