簡體   English   中英

執行並行任務 - >等待所有 - >使用結果

[英]Executing parallel tasks -> wait for all -> make use of result

GetSystems()GetActions()都返回不同類型的IEnumerable<T> 訪問以下結果我需要做什么? 我是否需要使用Task.WaitAll()或類似的東西?

Task t1 = new Task(() => GetSystems());
Task t2 = new Task(() => GetActions());

List<Task> tasks = new List<Task>() { t1, t2 };

Parallel.ForEach(tasks, t =>
                          {
                              t.Start();
                          });

//t1.Result...?

我正在使用C#4.0。

更新:

private Task<List<SYSTEM>> GetSystems()
{
    return Task.Factory.StartNew(() =>
    {
        using (var context = new DbContext())
        {
            return context.SYSTEM.ToList();
        }
    });
}

您需要使用Task<T>才能使用Result屬性。 鑒於評論,它看起來像你想要:

Task<List<SYSTEM>> t1 = ...;
Task<List<ACTION>> t2 = ...;

Task[] tasks = { t1, t2 };

Parallel.ForEach(tasks, t => t.Start());

Task.WaitAll(tasks);

List<SYSTEM> systems = t1.Result;
List<ACTION> actions = t2.Result;

你應該考慮如何處理失敗案例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM