C#异步方法返回void和Task的区别
如果异步(async关键字)方法有返回值,返回类型为T时,返回类型必然是 Task<T>。
但是如果没有返回值,异步方法的返回类型有2种,一个是返回 Task, 一个是返回 void:
public async Task CountDownAsync(int count) { for (int i = count; i >= 0; i--) { await Task.Delay(1000); } } public async void CountDown(int count) { for (int i = count; i >= 0; i--) { await Task.Delay(1000); } }
//一般async和await是同时存在的当只有async时vs会显示绿色波浪号
CountDownAsync(3);
~~~~~~~~~~~~~~~~~
Async 方法有三种可能的返回类型: Task、Task<T> 和 void,但是 async 方法的固有返回类型只有 Task 和 Task<T>。 当从同步转换为异步代码时,任何返回类型 T 的方法都会成为返回 Task<T> 的 async 方法,任何返回 void 的方法都会成为返回 Task 的 async 方法。 返回 void 的 async 方法具有特定用途: 用于支持异步事件处理程序。