Есть примерно такой простой код:
SomeClass _someClassObject;
public async void UpMethod()
{
_someClassObject = new SomeClass();
// этот метод возвращает Task<SomeResultClass>
var task = _someClassObject.SomeMethodAsync(/*параметры*/);
var result = await task; // ждёмс...
var r1 = result.r1;
var r2 = result.r2;
}
Пользователь нажимает кнопочку и вызывается UpMethod() он долгий... и даже несколько зависящий от действий пользователя.
И тут пользователь решает отменить действия которые выполняются внутри задачи. Он нажимет на кнопочку Отмена и вызывается метод Cancel()
public void Cancel(){
_someClassObject = null;// вот тут и вопрос
}
От этого действия задача отменится?
В официальном мануле по моему написано, что корректно отменять Task можно 2-мя путями:
Если бы его можно было отменить простым присвоением, то там бы так и написали.
А вообще, как вы себе это представляете? Откуда среда должна знать, как правильно выполнить завершение задачи, если вы сами об этом не позаботитесь? Если она тупо убьет задачу, то программа может остаться в непонятном состоянии, так как она могла работать с какими-то внешними данными.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей