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}");
}