异步方法正在串行执行

时间:2018-09-13 16:03:39

标签: c# asynchronous async-await c#-5.0

我正在学习异步编程。我有一些虚拟的async方法

        private static async Task BookHolidayAsync()
        {
            var start = DateTime.Now;
            var bookedHotel = BookHotelAsync();
            var bookedFlight = BookFlightAsync();
            var bookedCar = BookCarAsync();

            await bookedCar;
            await bookedFlight;
            await bookedFlight;

            var end = DateTime.Now - start;
            Console.WriteLine("Time taken: {0} seconds", end.Seconds);
        }

        private static async Task BookFlightAsync()
        {
            for (int i = 0; i < 999900000; i++)
            {

            }
        }

        private static async Task BookHotelAsync()
        {
            for (int i = 0; i < 999900000; i++)
            {

            }
        }

        private static async Task BookCarAsync()
        {
            for (int i = 0; i < 999900000; i++)
            {

            }
        }

和一些同步方法

        private static void BookHoliday()
        {
            var start = DateTime.Now;
            BookHotel();
            BookFlight();
            BookCar();

            var end = DateTime.Now - start;
            Console.WriteLine("Time taken: {0} seconds", end.Seconds);      
        }

        private static void BookFlight()
        {
            for (int i = 0; i < 999900000; i++)
            {

            }
        }

        private static void BookHotel()
        {
            for (int i = 0; i < 999900000; i++)
            {

            }
        }

        private static void BookCar()
        {
            for (int i = 0; i < 999900000; i++)
            {

            }
        }

我的主要方法是

static void Main(string[] args)
{
    BookHolidayAsync().Wait();
    BookHoliday();
}

在这里我不能理解的两件事

  1. 为什么异步方法串行执行?
  2. async花费的时间是9秒,而同步方法花费的时间是6秒,为什么async慢?

0 个答案:

没有答案