2
这是为什么工作的返回值?返回类型不是任务。为什么是“异步任务”的方法不是任务
public async Task<WorkItem> CreateWorkItem(WorkItem workItem)
{
WorkItem item = new WorkItem();
workItem.Description = "something";
item = await Task.FromResult(item);
return item;
}
为什么这不起作用?返回类型是任务。
public async Task<WorkItem> CreateWorkItem(WorkItem workItem)
{
WorkItem item = new WorkItem();
workItem.Description = "something";
Task<WorkItem> result = await Task.FromResult(item);
return result;
}
的'async'关键字使得'Task'例如透明的方法和自动换为您的返回值,在该'yield'声明重写把它变成一个迭代的方法一样。 –
在这种情况下,'async'完全不涉及。它指示编译器异步等待任务完成,然后返回结果。 'await Task.FromResult(item)'的结果是'item'。事实上,你可以写'返回item'为你的方法不会做任何事情异步 –
还要注意的是'async'简单地告诉编译器做'await'魔力。如果只在你的方法最后一次通话是异步的,没有必要等待的结果,你可以简单地返回task.Assuming你的方法做了一些真正的异步像一个HTTP调用,你可以写'返回httpClient.GetStringAsync(.. );'并完全删除'async'关键字。 –