Здрасьте.
Есть у нас числовые вычисления (голый C#). Дерево объектов проходится вдоль и поперёк, и для каждого листка считаются значения. Выглядит примерно так:
public Result Calculate(Parameters parameters)
{
if (this.IsLeaf)
{
return this.GetCalculationFormulaStrategy(parameters).Calculate();
}
else
{
return this.ListAllChilds().Aggregate(child => child.Calculate(parameters));
}
}
Нужно сделать так, чтобы по "знаку свыше" (клику пользователя) можно было отменить все эти подсчеты. Приложение многопоточное. Клик пользователя происходит в другом потоке.
Я рассматривал варианты:
1) Иметь
bool cancelled переменную (ГДЕ?), проверять на очередной итерации и, если что, делать return null (или кидать exception).
2) Обрывать поток нафиг.
3) Ваш вариант...
Кто делал подобное, подскажите правильный путь. Спасибо.