0

这里:

异步方法可以返回Task<T>Taskvoid. 为什么返回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>方法签名。

问题

但是为什么我需要intTask<int>? awaitable 与 INT 无关(!)!——它可能是一个网络服务下载的东西。为了密切关注我只能使用的异步操作Task

因此,要么Task<t>密切关注async操作,要么(!!!)是否指示方法的返回值?

我很困惑。:-(

4

1 回答 1

4

此示例中有两个任务。

返回的任务CalculateAnswer是一个Task<int>. 它代表方法CalculateAnswer。该任务将在完成时CalculateAnswer完成,其结果 (an int) 将是该方法的返回值。

另一个任务是由Task.Delay. 那只是一个Task;没有结果值。该任务代表延迟。

于 2013-07-13T18:20:39.157 回答