91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#5.0中async和await關鍵字的用法

發布時間:2021-03-06 14:08:56 來源:億速云 閱讀:335 作者:小新 欄目:編程語言

這篇文章主要介紹了C#5.0中async和await關鍵字的用法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

C# 5.0引入了兩個關鍵字 async和await,這兩個關鍵字在很大程度上幫助我們簡化了異步編程的實現代碼,而且TPL中的task與async和await有很大的關系

private async void button1_Click(object sender, EventArgs e)
        {
            var length = AccessWebAsync();

            // 這里可以做一些不依賴回復的操作
            OtherWork();

            this.textBox1.Text += String.Format("\n 回復的字節長度為:  {0}.\r\n", await length);
            this.textBox2.Text = Thread.CurrentThread.ManagedThreadId.ToString();
        }

        private async Task<long> AccessWebAsync()
        {
            MemoryStream content = new MemoryStream();

            // 對MSDN發起一個Web請求
            HttpWebRequest webRequest = WebRequest.Create("http://msdn.microsoft.com/zh-cn/") as HttpWebRequest;
            if (webRequest != null)
            {
                // 返回回復結果
                using (WebResponse response = await webRequest.GetResponseAsync())
                {
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        await responseStream.CopyToAsync(content);
                    }
                }
            }

            this.textBox3.Text = Thread.CurrentThread.ManagedThreadId.ToString();
            return content.Length;
        }

        private void OtherWork()
        {
            this.textBox1.Text += "\r\n等待服務器回復中.................\n";
        }

async是同步執行程序,而await起到的則是劃分片段以及掛起調用方的作用,并不會創建新的線程,根據大神的分析:

在await關鍵字出現的前面部分代碼和后面部分代碼都是同步執行的(即在調用線程上執行的,也就是GUI線程,所以不存在跨線程訪問控件的問題),await關鍵處的代碼片段是在線程池線程上執行。

在上面的代碼中,調用了FCL封裝的GetResponseAsync等方法從而不阻塞當前UI線程,await的確不會創建新的線程,但是就在這里而言,await表達式中的確創建了新的線程——GetResponseAsync所做的.以至于造成了表面同步的假象。我之前寫過一篇文章
C#async與await異步編程學習筆記

await關鍵字與Task有莫大的關聯,從其特定的返回值就可以看出來,更深層次的await與task的continuewith函數應該是等效的.因此,用async & await關鍵字實現異步要么調用FCL封裝好的異步方法。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“C#5.0中async和await關鍵字的用法”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

穆棱市| 老河口市| 宣武区| 同心县| 安远县| 九龙县| 呼伦贝尔市| 柘城县| 娱乐| 平泉县| 扬中市| 阳谷县| 天全县| 和政县| 庄浪县| 江北区| 股票| 铜山县| 兴文县| 读书| 铅山县| 萨迦县| 锡林浩特市| 雷州市| 宝兴县| 灌阳县| 海原县| 镇雄县| 湘阴县| 深圳市| 开封县| 安阳市| 廊坊市| 安顺市| 鄂州市| 蒲城县| 淮阳县| 木里| 阳江市| 嘉兴市| 东丽区|