.NET實現異步編程async和await

await和async是.NET Framework4.5框架、C#5.0語法裡面出現的,await和async是語法糖。

註意:

1、async出現在方法的聲明裡面,任何一個方法都可以增加async。

2、await放在Task前面,async和await是成對出現的,隻有async是沒有意義的,隻有await是報錯的。

隻有async是沒有意義的。

隻有await是報錯的。

3、await 隻能放在task前面,不推薦void返回值,使用Task來代替。Task和Task<T>能夠使用await, Task.WhenAny, Task.WhenAll等方式組合使用。Async Void 不行

private static async Task Return()
{
            //主線程執行
            Console.WriteLine($"NoReturn Sleep before await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
            TaskFactory taskFactory = new TaskFactory();
            Task task = taskFactory.StartNew(() =>
            {
                Console.WriteLine($"NoReturn Sleep before,ThreadId={Thread.CurrentThread.ManagedThreadId}");
                Thread.Sleep(3000);
                Console.WriteLine($"NoReturn Sleep after,ThreadId={Thread.CurrentThread.ManagedThreadId}");
            });
            //主線程到這裡就返回瞭,執行主線程任務
            await task;
            //這個回調的線程是不確定的:可能是主線程  可能是子線程  也可能是其他線程
            Console.WriteLine($"NoReturn Sleep after await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
}

到此這篇關於.NET實現異步編程async和await的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: