Как отменять только некоторые 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();
}