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) { } }