天天看點

c#多線程-任務并行Parallel使用

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

        }

繼續閱讀