c# - 在 C# 并行任务中为多个服务调用创建并行任务

标签 c# asynchronous parallel-processing task-parallel-library task

我想从各种服务中获取信息。我怎样才能使用 C# Task,而不是通过线程同时执行所有服务调用。

我试过的C#代码:

 void GetServiceList() {
    Task.Factory.StartNew(() => {
        var List1 = client1.GetList1();
        var List2 = client2.GetList2();
        var List3 = client3.GetList3();
        var List4 = client4.GetList4();
        var List5 = client5.GetList5();
        var List6 = client6.GetList6();
        var List7 = client7.GetList7();
        var List8 = client8.GetList8();
        var List9 = client9.GetList9();
        var List10 = client10.GetList10();
    });
}

在上面的代码中,创建了任务,但服务调用是按顺序发生的。我希望将其设为并行。

最佳答案

您在这里所做的是创建一个匿名方法,依次调用每个服务,然后在并行任务中执行该方法。您需要的是一个任务数组。

List<Task> taskList = new List<Task>();
Task task1=
            Task.Factory.StartNew(() =>
                var List1 = client1.GetList1(););

Task task2=
            Task.Factory.StartNew(() =>
                var List2 = client1.GetList2(););

// and so forth

taskList.Add(task1);
taskList.Add(task2);

Task.WaitAll(taskList.ToArray());

关于c# - 在 C# 并行任务中为多个服务调用创建并行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390398/

相关文章:

c# - 如何从集合中随机获取字符串但更喜欢集合开头的字符串

c# - DequeueReusableCell 仅在 iPhone 4S 上使应用程序崩溃

Java:捕获异常是异步的吗?

Django异步更新单页模板

c - MPI 上的并行数组加法

c# - 错误CS0027 : Keyword 'this' is not available in the current context

c# - ubuntu 中 kernel32.dll 的等价物是什么?

javascript - 同步 CasperJS 操作期间的异步调用

parallel-processing - 用于低耦合并行进程的 OpenMPI 自定义容错

multidimensional-array - CUDA:带有 3D 内核的嵌套 FOR 循环:如何确定线程应写入结果的位置?