我有多個任務返回相同的對象類型,我想使用Task.WhenAll(new[]{t1,t2,t3});
調用並讀取結果。從Task.WhenAll獲得結果
當我嘗試使用
Task<List<string>> all = await Task.WhenAll(new Task[] { t, t2 }).ConfigureAwait(false);
我得到一個編譯錯誤
無法隱式轉換類型 '無效' 到
'System.Threading.Tasks.Task<System.Collections.Generic.List<string>>
兩個任務都調用類似的方法來此。
private Task<List<string>> GetFiles(string path)
{
files = new List<string>();
return Task.Run(() =>
{
//remove for brevity
return files;
});
}
能否請您澄清[WhenAll]什麼樣的MSDN的一部分(https://msdn.microsoft.com/en-us/library/hh194766%28v=vs.110%29.aspx)不明確?會使問題更容易回答。 –
其實沒有一篇文章不清楚。什麼是不明確的是這個空白來自哪裏。 – user3373870
我看到了 - 正如Mike Hixson指出的那樣,您有'Task'(任務不返回值)列表而不是'Task' - 因此等待'void'中的結果。通常你只是不使用快捷數組語法指定類型來避免這樣的問題 - 「ask.WhenAll(new [] {t,t2})...'。或者正確使用類型化的列表/任務數組,如MSDN示例 - 'var tasks = new List >();'。 –