异步编程
**
(仅用于个人学习笔记)
**
一,关键字
c# 关键字 :async await(不等于多线程)
二,async,await的基本用法
“异步方法”:用async关键字修饰的方法
1)异步方法的返回值一般是Task,T是真正的返回值类型,Task。
2)即使方法没有返回值,也最好把返回值声明为非泛型的Task。
3)调用泛型方法时,一股在方法前加上await关,这样拿到的返回值就是泛型指定的T类型;
4)异步方法的“传染性”:一个方法中如果有await调用,则这个方法也必须修饰为async
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
static async Task Main(string[] args)
{
string fileName = "d:/1.txt";
File.Delete(fileName);
File.WriteAllTestAsyns(fileName,"hello async");
string s = await File.ReadAllTestAsync(fileName);
Console.WriteLine(s);
}
三,编写异步方法
如果同样的功能,既有同步方法,
又有异步方法,那么首先使用异步方法。
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
static async Task DownlodeHtmlAsync(string url,string filename)
{
using(HttpClient httpClient = new HttpClient())
{
string html = await httpClient.GetStringAsync(url);
await File.WriteAllTextAsync(filename,html);
}
}
//调用举例
DownLodeHtmlAsync("https://www.baidu.com",@"e:\temp\a\1.txt");
异步委托