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