找回密碼
 注冊帳號

掃一掃,訪問微社區

小賤 async和await到底怎么玩?

7
回復
2215
查看
打印 上一主題 下一主題
[ 復制鏈接 ]
排名
1157
昨日變化

18

主題

162

帖子

2427

積分

Rank: 9Rank: 9Rank: 9

UID
14099
好友
24
蠻牛幣
3174
威望
0
注冊時間
2014-2-11
在線時間
647 小時
最后登錄
2020-10-20

七夕浪漫情人專欄作家

QQ

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

x
太久太久沒回來了,一登錄一堆的未讀,感謝各位看得起哈!
今天來講講async和await的用法,也是因為面試了太多的人,發現異步編程聽了很多,看了很多,可是async和await還是用不明白。
我要講的內容很少,5分鐘解決戰斗,但會讓你看得很明白。
[mw_shl_code=csharptrue]
class Program
{
    static async Task A()
    {
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(\"Before Method 1\");
            Thread.Sleep(500);
        }
        await Task.Run(() =>
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine(\"Method 1\");
                Thread.Sleep(500);
            }
        });
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(\"After Method 1\");
            Thread.Sleep(500);
        }
    }

    static void B()
    {
        for (int i = 0; i < 15; i++)
        {
            Console.WriteLine(\"Method 2\");
            Thread.Sleep(500);
        }
    }

    static void Main(string[] args)
    {
        _ = A();
        B();
        Console.ReadKey();
    }
}

[/mw_shl_code]

先別急著復制去跑,先想想這代碼跑完是個什么結果?~
~
~
~
~
~
~
~
~
~
10秒到了,有答案了嗎?



是不是這樣的?不是?那你聽我講。
1.async修飾的方法,再沒有遇到await前,都是同步方法(你試試只加async不加await是不是有警告);
2.遇到await線程開始切換上下文(異步的開始);
3.await后的同步方法(你看著覺得是同步),實際并不在主線程運行,所以“After Method 1”并沒有阻塞“Method 2”;
就三句話,看明白了嗎?







回復

使用道具 舉報

5熟悉之中
677/1000
排名
14230
昨日變化

0

主題

85

帖子

677

積分

Rank: 5Rank: 5

UID
276112
好友
0
蠻牛幣
1820
威望
0
注冊時間
2018-4-8
在線時間
534 小時
最后登錄
2020-12-1
沙發
2020-10-19 10:08:51 只看該作者
沒有。。。。
回復

使用道具 舉報

7日久生情
3537/5000
排名
796
昨日變化

6

主題

588

帖子

3537

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
26340
好友
1
蠻牛幣
1402
威望
0
注冊時間
2014-5-23
在線時間
1733 小時
最后登錄
2020-12-1
板凳
2020-10-19 12:12:38 只看該作者
不懂?。。。。。。。。。。。?!
回復

使用道具 舉報

排名
64950
昨日變化

0

主題

32

帖子

84

積分

Rank: 2Rank: 2

UID
151515
好友
0
蠻牛幣
4
威望
0
注冊時間
2016-6-11
在線時間
50 小時
最后登錄
2020-11-30
地板
2020-10-19 15:31:11 只看該作者
百度一下,很容易吵到詳細的邏輯
回復 支持 反對

使用道具 舉報

3偶爾光臨
184/300
排名
64950
昨日變化

0

主題

29

帖子

184

積分

Rank: 3Rank: 3Rank: 3

UID
327914
好友
0
蠻牛幣
129
威望
0
注冊時間
2019-7-23
在線時間
153 小時
最后登錄
2020-12-1
5#
2020-11-4 08:45:53 只看該作者
分享是個好習慣
回復

使用道具 舉報

排名
671
昨日變化

20

主題

1194

帖子

3723

積分

Rank: 9Rank: 9Rank: 9

UID
68430
好友
14
蠻牛幣
19184
威望
0
注冊時間
2015-1-14
在線時間
1131 小時
最后登錄
2020-11-13
6#
2020-11-11 12:00:26 只看該作者
原來這里有總結~~哈哈
回復 支持 反對

使用道具 舉報

7日久生情
1630/5000
排名
1987
昨日變化

36

主題

194

帖子

1630

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
144217
好友
2
蠻牛幣
9585
威望
0
注冊時間
2016-4-1
在線時間
774 小時
最后登錄
2020-11-30
7#
6 天前 只看該作者
哎,你拿這面試,直接掛掉你
回復 支持 反對

使用道具 舉報

7日久生情
2799/5000
排名
10707
昨日變化

0

主題

1377

帖子

2799

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
301976
好友
1
蠻牛幣
3039
威望
0
注冊時間
2018-10-31
在線時間
1324 小時
最后登錄
2020-11-27
8#
5 天前 只看該作者
感謝大佬分享   
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

内蒙古麻将app 陕西快乐十分经验 哈尔滨麻将真人玩法 技巧打牌 开元棋牌有鬼吗 江苏快三app 福彩3d开奖预测 微乐麻将官网下载 真人麻将游戏4人打 大富豪棋牌游戏大厅手机下载 快三倍投必死 内蒙古十一选五走势图今天的 qq捕鱼大亨全屏秒杀 闲来贵州麻将下载 天天棋牌首页 福彩3d晚秋字迷 天津快乐10分玩法介绍