通过在同步方法中循环多个TaskCompletionSource实例,超过5个程序执行起来会变慢,但是在异步方法中就没有这个问题了。
这是有问题的代码 使用同步方式,执行变慢,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:");
});