C#中的Async,Await异步技术
async和await是出现在C#5.0之后,它的出现给异步编程带来了极大方便,下边说说这两个关键字。
async 关键字
- 标记一个方法是
不会阻塞
的版本 - 在执行时会瞬间完成返回一个任务
Task
- C#本身不会为其启动新线程
- 如果是不规范的处理,即便标记了
async
,也可能阻塞线程、 - .Net下几乎所有执行慢的方法都会有
async
版本 async
方法里必须至少使用一次await
,否则就没必要用async
关键字
await关键字
await
后应该紧跟task
- 同步的等待该任务完成,并获取返回值
await
代码之后的代码仍由原线程执行await
正确的task
会等待但不会阻塞
总结
所以编写正确的async
方法很重要。下边以下载网页并保存到C盘目录为例,写一个Demo
范例
public async Task<string> DownloadAndSaveAsync(string url)
{
var wc = new WebClient();
var html = await wc.DownloadStringTaskAsync(url);
await Task.Run(()=>{
File.WriteAllText("c:\1.txt",html);
});
return "下载网页并保存成功"
}
0条评论