ParallelLoopResult loopR= Parallel.For(0, 10, async i => {
await Task.Delay(1);
PrintX(i);
});
//其他业务代码
关键字async await可以实现任务不阻塞主线程 其他业务代码可以继续往下执行
private static Int32 baseCount = 10;
private static Int32 minCount = 0;
private static void PrintX(int x)
{
lock (obj)
{
if (baseCount > 0)
{
baseCount = baseCount - 1;
Task.Delay(10).Wait();
minCount += 1;
}
}
Console.WriteLine($"X:{x} baseCount:{baseCount} minCount{minCount} Task{Task.CurrentId}");
}