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'關鍵字。 –