日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

.NET實(shí)現(xiàn)異步編程async和await_實(shí)用技巧

作者:.NET開發(fā)菜鳥 ? 更新時間: 2022-05-10 編程語言

await和async是.NET Framework4.5框架、C#5.0語法里面出現(xiàn)的,await和async是語法糖。

注意:

1、async出現(xiàn)在方法的聲明里面,任何一個方法都可以增加async。

2、await放在Task前面,async和await是成對出現(xiàn)的,只有async是沒有意義的,只有await是報錯的。

只有async是沒有意義的。

只有await是報錯的。

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

private static async Task Return()
{
            //主線程執(zhí)行
            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}");
            });
            //主線程到這里就返回了,執(zhí)行主線程任務(wù)
            await task;
            //這個回調(diào)的線程是不確定的:可能是主線程  可能是子線程  也可能是其他線程
            Console.WriteLine($"NoReturn Sleep after await,ThreadId={Thread.CurrentThread.ManagedThreadId}");
}

原文鏈接:https://www.cnblogs.com/dotnet261010/p/9251123.html

欄目分類
最近更新