CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
Console.WriteLine("Основной поток запущен");
for (int i = 0; i < 300; i++) {
task[i] = new Task( () =>
{
MyTask();
},token);
task[i].Start();
}
Task.WaitAll(task);
Console.WriteLine("Основной поток завершен");
Console.ReadLine();
using (var cts = new CancellationTokenSource())
{
var ct = cts.Token;
tasks =
Enumerable.Range(0, 300)
.Select(i => Task.Run(() => MyTask(ct), ct));
cts.CancelAfter(TimeSpan.FromSeconds(30));
try
{
await Task.WhenAll(tasks);
}
catch (AggregateException)
{
}
}
async Task IgnoreCancellation(Task t)
{
try
{
await t;
}
catch (OperationCancelledException)
{
}
}