Я считаю, что проблема в вашем звонке на
Worker.Wait(_cancellationTokenSource.Token);
Он ждет, пока токен не будет сигнализирован - это уже так, потому что вы только что позвонили Cancel()
. Если вы измените это просто
Worker.Wait();
тогда я полагаю, вы увидите состояние RanToCompletion
. Вы не увидите Отменено, потому что ваша задача не выбрасывает OperationCanceledException
. Если вы измените свой метод RunTasks
на вызов
cancellationToken.ThrowIfCancellationRequested()
в конце, тогда вам нужно поймать AggregateException
в Stop
- но тогда вы увидите состояние Canceled
в конце.
По крайней мере, так показывают мои эксперименты:)