Thread " , ". , , , , , Task.Run, Thread. , CancellationTokenSource.
var cts = new [] {
new CancellationTokenSource(),
new CancellationTokenSource()};
var ts = new[]
{
Task.Run(() => DoSomething1(cts[0].Token), cts[0].Token),
Task.Run(() => DoSomething2(cts[1].Token), cts[1].Token)
};
var w = Task.WaitAny(ts);
for (int i = 0; i < cts.Length; i++)
{
if (i != w) cts[i].Cancel();
}
DoSomething CancellationToken.IsCancellationRequested . Task.Run, , , . .