异步方法是指用async关键词修饰的方法:
1. 异步方法的返回值有以下三类, 返回值一般是Task<T>, T是真正的返回值类型, Task<int>. 异步方法通常以Async结尾。
Task<T>, Task, void
2. 即使方法没有返回值,也最好使用Task返回值,而不是void.
3. 调用异步方法时,一般在方法前加上await 关键词,这样拿到的返回值就是指定的泛型类型。
4. 方法中如果使用了await关键词,则方法必须修饰为async. VS2022会智能加上!
static async Task FileCreationAsync()
{
string fileName = "C:/work/test1.txt";
File.Delete(fileName);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++)
{
sb.AppendLine("helo word");
}
await File.WriteAllTextAsync(fileName, sb.ToString());
string s = await File.ReadAllTextAsync(fileName);
Console.WriteLine(s);
}
不能使用异步方式时的方案:
有时候不能使用await,必须转换为同步方法,这时候可以使用Task对象的Result属性和Wait()方法将异步方法转换为同步方法。
注意:此处有风险,容易出现死锁。
持续更新:
需要继续深入Threadpool跟.Net的锁