async,await.task

 

示例代碼:

        private void button16_Click(object sender, EventArgs e)
        {

            Console.WriteLine("按鈕開始" + Thread.CurrentThread.ManagedThreadId.ToString());
            task1();
            Console.WriteLine("按鈕結束" + Thread.CurrentThread.ManagedThreadId.ToString());

        }

        static async Task task1()
        {

            Console.WriteLine("task1開始" + Thread.CurrentThread.ManagedThreadId.ToString());
            Thread.Sleep(5);
            task2();
            Console.WriteLine("task1結束" + Thread.CurrentThread.ManagedThreadId.ToString());

        }

        static async Task<string> task2()
        {
            Console.WriteLine("task2開始" + Thread.CurrentThread.ManagedThreadId.ToString());
            Thread.Sleep(5);
            await Task.Run(() => { Thread.Sleep(10);
                Console.WriteLine("xxxxxxxxxxxxxxxx" + Thread.CurrentThread.ManagedThreadId.ToString());
            });

            Console.WriteLine("task2結束" + Thread.CurrentThread.ManagedThreadId.ToString());

            return "ddd";
        }

 

async修飾的函數,在被調用時都會開個線程執行,如果加了await當前線程就會等待task2執行完後在往下執行,不加的話,就會併發一起執行。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章