// using System; // using System.Threading.Tasks; // // namespace Multithreading // { // internal static class Program // { // public static void Main(string[] args) // { // Console.WriteLine("Program started"); // // // Task task = new Task(() => // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} started"); // // for (int i = 0; i < 10; i++) // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {i}"); // // Thread.Sleep(500); // // } // // // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} stopped"); // // }); // // task.Start(); // // // // // // Task task2 = Task.Run(() => // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} started"); // // for (int i = 0; i < 10; i++) // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {i}"); // // Thread.Sleep(500); // // } // // // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} stopped"); // // }); // // // // task.Wait(); // // task2.Wait(); // // // // Task task3 = new Task(() => // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} started"); // // for (int i = 0; i < 10; i++) // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {i}"); // // Thread.Sleep(500); // // } // // // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} stopped"); // // }); // // task3.RunSynchronously(); // // // Task[] tasks = new Task[10]; // // Random random = new Random(); // // for (int i = 0; i < 10; i++) // // { // // tasks[i] = Task.Run(() => // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} started"); // // for (int j = 0; j < 10; j++) // // { // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {j}"); // // Thread.Sleep(random.Next(100, 1000)); // // } // // // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} stopped"); // // }); // // } // // // // // Task.WaitAll(tasks); // // Task.WaitAny(tasks); // // // Parallel.For(0, 10000, i => // // { // // // do whatever you want to do in parallel // // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {i}"); // // }); // // CancellationTokenSource cts = new CancellationTokenSource(); // CancellationToken token = cts.Token; // // Task task4 = Task.Run(() => // { // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} started"); // for (int i = 0; i < 100; i++) // { // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {i}"); // Thread.Sleep(500); // // // token.ThrowIfCancellationRequested(); // if (token.IsCancellationRequested) // { // // tidy up // break; // } // } // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} stopped"); // }, token); // // Task[] tasks2 = new Task[10]; // for (int i = 0; i < tasks2.Length; i++) // { // tasks2[i] = Task.Run(() => // { // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} started"); // for (int i = 0; i < 100; i++) // { // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId}: {i}"); // Thread.Sleep(500); // // // token.ThrowIfCancellationRequested(); // if (token.IsCancellationRequested) // { // // tidy up // break; // } // } // Console.WriteLine($"Task with Thread {Thread.CurrentThread.ManagedThreadId} stopped"); // }); // } // // if (Console.ReadKey().Key == ConsoleKey.A) // { // cts.Cancel(); // cts.Dispose(); // cts = null; // } // // Thread.Sleep(1000); // // if (cts != null) // { // cts.Dispose(); // cts = null; // } // // Console.WriteLine("Program ended"); // } // } // }