我試圖做包裝方法調用我的異步方法有一些額外的計算:任務<IList<>>爲Func鍵<>的結果
private async Task<IEnumerable<Dictionary<string, object>>> Execute(Func<Task<IList<Dictionary<string, object>>>> func)
{
var ret = await func();
// Skipped
return ret;
}
它完全適用於某些情況下:
var data = await Execute(() => chain.Start(parameters), args);
其中chain.Start是
async Task<IList<Dictionary<string, object>>> Start(Dictionary<string, object> parameters)
,但在某些情況下,我的FUNC不是awaitable,所以我試圖與r eturn Task.FromResult就可以了。
var ret = Execute(() => Task.FormResult(new List<Dictionary<string, object>>());
和compilator說,那
錯誤24無法轉換lambda表達式的委託類型 「System.Func >>>」 因爲一些塊中的返回類型不是隱含 可轉換爲代表返回類型
這種情況下可以使用awaitable嗎?或者我應該以同步方式重寫我的代碼?
[Offtopic]德米特羅,你是烏克蘭? – 2013-11-28 09:27:30
@Elliot,當然 –