await的等待

namespace TestThread
{
    internal class Program
    {

        static int count = 0;
        static object locker = new object();


        static void Main(string[] args)
        {
            List<Task> tasks = new List<Task>();

            for (int i = 0; i < 10; i++)
            {
                var tempIx = i;
                var task = new TaskFactory().StartNew(async () =>
                {
                    Console.WriteLine("线程开始" + tempIx);

                    Monitor.Enter(locker);
                    await AddOne();
                    Monitor.Exit(locker);

                    Console.WriteLine("线程结束" + tempIx);
                });
                tasks.Add(task);
            }

            // Task.WhenAll(tasks.ToArray());
            Task.WaitAll(tasks.ToArray());
            Console.WriteLine("result:" + count);
            Console.ReadLine();
        }

        static async Task AddOne()
        {
            for (int i = 0; i < 10000; i++)
            {
                // lock (locker)
                {
                    count++;
                }

            }

        }
    }




}

  

posted @ 2023-03-15 22:25  China Soft  阅读(23)  评论(0)    收藏  举报