using System.Threading.Tasks;
using System.Collections.Generic;
using System.Diagnostics;
public static void Main(string[] args)
var tasks = new List<Task>();
var sw = new Stopwatch();
ThreadPool.SetMaxThreads (maxThreads, maxThreads);
for (int i = 0; i < maxThreads; i++) {
Console.WriteLine($"Task #{taskId} run");
var task = Task.Run(() => {
Console.WriteLine($"Task #{taskId} started {sw.ElapsedMilliseconds}");
Console.WriteLine($"Task #{taskId} finished {sw.ElapsedMilliseconds}");
for (int i = 0; i < maxThreads; i++) {
Console.WriteLine($"Task Set 2 #{taskId} run");
var task = Task.Run(() => {
Console.WriteLine($"Task Set 2 #{taskId} started {sw.ElapsedMilliseconds}");
Console.WriteLine($"Task Set 2 #{taskId} finished {sw.ElapsedMilliseconds}");
Console.WriteLine($"waiting");
Task.WaitAll(tasks.ToArray());