Каков наиболее эффективный способ создания события «отмена» в программе на C #, которая обрабатывает большой набор данных в цикле в отдельном потоке?
Сейчас я просто использую событие отмены, которое вызывается из моего потока пользовательского интерфейса, которое впоследствии вызывает функцию «onCancel» в потоке обработки чисел.Эта функция отмены устанавливает для переменной значение «истина», которую цикл проверки периодически проверяет, например,
Class Cruncher {
private bool cancel = false;
public cruncher()
{
crunch();
}
private void crunch()
{
while(conditions AND !cancel) { crunch; }
dispose_resources;
}
private void onCancel()
{
cancel = true;
}
}
Хотя я не проверяю переменную отмены так часто, как в моем примере выше (и фактически не выполняет отмену NOT), Я все же хотел бы максимально оптимизировать этот метод хруста.Любые примеры, где это делается более эффективно, было бы очень приятно видеть.