您的位置:首页 > 其它

基于任务的异步模式(TAP)

2016-07-11 17:59 615 查看

Task

.net 4.0为我们带来了Task的异步,我们有以下三种方法创建Task。

1,Task.Factory.StartNew,比较常用。

2,Task.Run,是.net 4.5中增加的。

3,Task.FromResult,如果结果是已计算,就可以使用这种方法来创建任务。

下面就以Task.Factory.StartNew继续来实现前面的那个例子,代码如下。

1 /// <summary>
2         /// 使用async/await
3         /// </summary>
4         /// <param name="sender"></param>
5         /// <param name="e"></param>
6         private async void button5_Click(object sender, EventArgs e)
7         {
8             this.richTextBox1.Text = "正在处理请求...";
9
10             await DoWorkAsync();
11         }
12
13         public async Task DoWorkAsync()
14         {
15             var url = this.textBox1.Text.Trim();
16             var request = HttpWebRequest.Create(url);
17             var response = request.GetResponse();
18             var stream = response.GetResponseStream();
19             using (StreamReader reader = new StreamReader(stream))
20             {
21                 var content = reader.ReadToEnd();
22                 this.richTextBox1.Text = content;
23             }
24         }


View Code

有以下疑问:

1,看起来使用了async,UI线程还是会阻塞?

2,使用async并没有创建一个新的线程?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: