|
在上一篇文章中,我們從構(gòu)建響應(yīng)靈敏的界面以及構(gòu)建高可伸縮性的服務(wù)應(yīng)用來討論我們?yōu)槭裁葱枰惒骄幊蹋惒骄幊棠芙o我們帶來哪些好處。那么知道了好處,我們就開始吧,但是在異步編程這個(gè)方面,說總是比做簡(jiǎn)單。套用那句不是名言的名言:編寫異步程序是困難的,編寫可靠的異步程序尤其困難。因?yàn)楫惒匠绦蚍浅ky以編寫,而且非常容易出錯(cuò),很多基本的構(gòu)造元素在異步編程中都無法使用,這讓我們這些開發(fā)人員更愿意編寫同步的代碼,雖然我們知道有些地方真的應(yīng)該使用異步。
如何實(shí)現(xiàn)異步
對(duì)于很多人來說,異步就是使用后臺(tái)線程運(yùn)行耗時(shí)的操作。在有些時(shí)候這是對(duì)的,而在我們?nèi)粘4蟛糠謭?chǎng)景中卻不對(duì)。
比如現(xiàn)在我們有這么一個(gè)需求:使用HttpWebRequest請(qǐng)求某個(gè)指定URI的內(nèi)容,然后輸出在界面上的文本域中。同步代碼很容易編寫:
private void btnDownload_Click(object sender,EventArgs e)
{
var request = HttpWebRequest.Create("http://www.sina.com.cn");
var response = request.GetResponse();
var stream = response.GetResponseStream();
using(StreamReader reader = new StreamReader(stream))
{
var content = reader.ReadToEnd();
this.txtContent.Text = content;
}
}
NET技術(shù):.NET中的異步編程(二)- 傳統(tǒng)的異步編程,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。