Example:
_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);
}