_cts = new System.Threading.CancellationTokenSource(); int[] sleepConfiguration = [5, 7, 10, 1, 3]; List<Task> sleepingTasks = new List<Task>(); foreach (int sleepSeconds in sleepConfiguration) { Task sleepingTask = Task.Run(() => { DoSomethingLong(sleepSeconds); }, _cts.Token); sleepingTasks.Add(sleepingTask); } await Task.WhenAll(sleepingTasks); MessageBox.Show("Done!"); private void DoSomethingLong(int sleepSeconds) { Thread.Sleep(sleepSeconds * 1000); }
Task.Run cannot be canceled immediately
- Details
- Written by: Stanko Milosev
- Category: C#
- Hits: 32
Example: