从这里:
异步方法可以返回
Task<T>
、Task
或void
. 为什么返回Task<T>
或Task
?因为它们是可等待的,而 void 不是。因此,如果您有一个返回Task<T>
or的异步方法Task
,那么您可以将结果传递给 await。
现在考虑这个例子:
/*1*/ public async Task<int> CalculateAnswer()
/*2*/ {
/*3*/ await Task.Delay(100);
/*4*/
/*5*/ // Return a type of "int", not "Task<int>"
/*6*/ return 42;
/*7*/ }
我确实明白,当控件进入async
方法并遇到await
操作员时,它首先检查等待对象是否已完成,如果已完成,则它会定期运行(同步)。如果没有,则从async
方法返回。
好的,它会返回,我们需要密切关注异步任务。我想这就是为什么我们有Task<T>
方法签名。
问题
但是为什么我需要int
在 Task<int>
? awaitable 与 INT 无关(!)!——它可能是一个网络服务下载的东西。为了密切关注我只能使用的异步操作Task
。
因此,要么Task<t>
密切关注async
操作,要么(!!!)是否指示方法的返回值?
我很困惑。:-(