[英]What is difference between Task.FromResult and Task.CompletedTask?
Task.FromResult
和Task.CompletedTask
有什么區別?
public Task Test1()
{
return Task.CompletedTask;
}
public Task Test2()
{
return Task.FromResult(0);
}
您的Task.FromResult(0)
真的返回一個Task<int>
,而不是(只是)一個普通的Task
。
所以這會編譯得很好
public Task<int> Test2()
{
return Task.FromResult(0);
}
你不能在這里使用 Task.CompletedTask
CompletedTask
沒有結果字段,也沒有泛型類型參數。 您可以使用它來跳過占用系統資源來完成工作。
FromResult
變體返回一個泛型Task
,參數的類型是泛型類型參數。 在調用者期望異步行為並因此請求返回Task
的上下文中,您可以使用此變體來避免浪費資源只返回一個值。
請注意,泛型Task<T>
派生自非泛型Task
,因此這兩種方法在調用者進行即發即棄調用或只是不關心讀取結果的上下文中同樣有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.