Как отменять только некоторые Task'и?

Вот допустим у меня есть несколько задач, некоторые из которых я хочу отменить (но не все). Я использую токен отмены и всё прекрасно.

class ClassWithToken
{
    private CancellationTokenSource _cancellationTokenSource;
    public async void StartTask(Action aciton)
    {
        using(_cancellationTokenSource = new CancellationTokenSource())
        {
            await Task.Run(aciton, _cancellationTokenSource.Token);
        }
    }
    public void Stop()
    {
        _cancellationTokenSource?.Cancel();
    }
}

Пока не появляется еще несколько Task-ов. Т.к у меня их несколько, мне что, под каждый Task делать отдельный токен чтобы потом отменить? Полагаю, это неправильно. Так как же правильно отменять только некоторые задачи, а не все подряд?

private CancellationTokenSource _cts1;
public async void StartTask(Action aciton)
{
    using (_cts1 = new CancellationTokenSource())
    {
        await Task.Run(aciton, _cts1.Token);
    }
}
public void Stop()
{
    _cts1?.Cancel();
}


private CancellationTokenSource _cts2;
public async void StartTask(Action aciton)
{
    using (_cts2 = new CancellationTokenSource())
    {
        await Task.Run(aciton, _cts2.Token);
    }
}
public void Stop()
{
    _cts2?.Cancel();
}

Ответы (0 шт):