同期メソッドで TaskCompletionSource の複数のインスタンスをループすると、5 つを超えるプログラムの実行が遅くなりますが、非同期メソッドではこの問題はありません。
これは問題のあるコードです 同期方式を使用すると、実行が遅くなり、約 1 秒で 1 つ作成されます
Parallel.For(1, 100, (index) =>
{
System.Console.WriteLine("start:");
var t = new TaskCompletionSource<string>();
count++;
System.Console.WriteLine("end:" + count + "\n");
t.Task.Wait();
System.Console.WriteLine("ended:");
});
これは問題のないコードです,非常に高速に実行します
Parallel.For(1, 100, async (index) =>
{
System.Console.WriteLine("start:");
var t = new TaskCompletionSource<string>();
count++;
System.Console.WriteLine("end:" + count + "\n");
await t.Task;
System.Console.WriteLine("ended:");
});