c# - 一起运行两个 parallel.foreach()

标签 c# .net multithreading backgroundworker task-parallel-library

我有一个后台 worker ,它为列表项调用并行线程

 doWork()
    {
    Parallel.foreach(list1, a=>
    {
       while(true)
       {
             //do some operations
       }
    });

    Parallel.foreach(list2, b=>
    {
        while(true)
        {
            //do some operations
        } 
    });
    }

如果我想同时运行这两个列表,我应该创建另一个线程作为它们的父线程还是其他方式?我分别获得了这两个列表,因此不能将它们组合起来。而且我在这两个列表中运行无限循环。

最佳答案

您可以使用任务在不同的线程上运行两个循环。使用普通的 foreach 循环。

var t1 = Task.Factory.StartNew(() => 
{
    foreach(var a in list1)
    {
        //do some operations
    }
});

var t2 = Task.Factory.StartNew(() => 
{
    foreach(var a in list1)
    {
        //do some operations
    }
});

// This will block the thread until both tasks have completed
Task.WaitAll(t1, t2);

关于c# - 一起运行两个 parallel.foreach(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13357248/

相关文章:

c# - 关于c#中|=的问题

.net - kendo ui MVC 网格(服务器)中嵌入客户端模板的条件

c# - 如何确定给定字体的字符串的大小

python - python 中的线程和动态列表问题

c# - 如何从 Swagger 1.2 规范生成 C# 客户端?

c# - 使用后期绑定(bind)获取 List<T> 值

c# - 缺少 HttpClient 对象方法

c# - C# 目录的组权限

ios - 为各种函数创建一个数组线程安全 - iOS

c++ - 如何处理 QThread 上的事件?