Я знакомлюсь с Task и зашел так далеко:
В основном:
Task<double> t = Task.Run(TW.DoingMegaFlops_Async);
Где в классе TW:
public async Task<double> DoingMegaFlops_Async()
{...await ...; return 0.0;}
Мое концептуальное консольное приложение строится и работает просто отлично. Проблема в том, как расширить это с помощью Cancellation Token
. Я пробовал это:
CancellationTokenSource wtokenSource= new CancellationTokenSource();
Task.Run(TW.DoingMegaFlops_Async(wtokenSource.Token), wtokenSource.Token);
и в классе TW:
public async void DoingMegaFlops_Async(CancellationToken wtoken)
{...await...; return;}
Ошибка сборки в Main:
Cannot convert from 'void' to 'System.Action'
Я уже заморочился с кастингом на (Action), но безрезультатно. На самом деле, я не очень понимаю, что я здесь делаю, поэтому хотел бы узнать из форума.
Как видно из фрагментов кода, я уже урезал интерфейс метода Async, перейдя к возвращаемому типу void. Не знаю, действительно ли это облегчило ситуацию.