理想的には、ノンブロッキング モードでタスクを遅らせてから、すべてのタスクが完了するのを待ちます。Task.Delay によって返されるタスク オブジェクトを追加してから、Task.WaitAll を使用しようとしましたが、これは役に立たないようです。この問題を解決するにはどうすればよいですか?
class Program
{
public static async void Foo(int num)
{
Console.WriteLine("Thread {0} - Start {1}", Thread.CurrentThread.ManagedThreadId, num);
var newTask = Task.Delay(1000);
TaskList.Add(newTask);
await newTask;
Console.WriteLine("Thread {0} - End {1}", Thread.CurrentThread.ManagedThreadId, num);
}
public static List<Task> TaskList = new List<Task>();
public static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
int idx = i;
TaskList.Add(Task.Factory.StartNew(() => Foo(idx)));
}
Task.WaitAll(TaskList.ToArray());
}
}