C# async、await并发编程实例

   class Program
    {
        /// <summary>
        /// https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/
        /// https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/how-to-make-multiple-web-requests-in-parallel-by-using-async-and-await
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        static async Task Main(string[] args)
        {
            Console.WriteLine("开始任务,线程Id:" + Thread.CurrentThread.ManagedThreadId);
            Task<int> test1 = Test1Async();
            Task<int> test2 = Test2Async();

            Console.WriteLine("其它并发任务,线程Id:" + Thread.CurrentThread.ManagedThreadId);

            #region 将这些代码注释,就明白并发效果

            int test1Result = await test1;
            Console.WriteLine("任务1结果=" + test1Result);
            int test2Result = await test2;
            Console.WriteLine("任务2结果=" + test2Result);

            #endregion

            Console.WriteLine("任务全部完成,线程Id:" + Thread.CurrentThread.ManagedThreadId);
        }

        private static async Task<int> Test1Async()
        {
            Console.WriteLine("进入任务1...线程Id:" + Thread.CurrentThread.ManagedThreadId);
            await Task.Delay(3000);
            Console.WriteLine("任务1完成1...线程Id:" + Thread.CurrentThread.ManagedThreadId);
            await Task.Delay(3000);
            Console.WriteLine("任务1完成2...线程Id:" + Thread.CurrentThread.ManagedThreadId);
            return 1;
        }

        private static async Task<int> Test2Async()
        {
            Console.WriteLine("进入任务2...线程Id:" + Thread.CurrentThread.ManagedThreadId);
            await Task.Delay(3000);
            Console.WriteLine("任务2完成1...线程Id:" + Thread.CurrentThread.ManagedThreadId);
            await Task.Delay(3000);
            Console.WriteLine("任务2完成2...线程Id:" + Thread.CurrentThread.ManagedThreadId);
            return 2;
        }

    }

异步编程为什么能够提高并发数 

https://www.cnblogs.com/dudu/p/3762672.html

https://www.cnblogs.com/cuiyansong/p/7424997.html

https://www.cnblogs.com/jesse2013/p/asynchronous-programming-in-dotnet.html

posted @ 2020-05-27 22:48  事理  阅读(498)  评论(0)    收藏  举报