使用不带列表的Parallel.ForEach

时间:2018-08-14 21:48:43

标签: c# multithreading parallel.foreach

我想使用Parallel.ForEach作为一种多线程方法,该方法执行代码而无需列表或文件。

我想这样做:

Parallel.ForEach
{
      Console.WriteLine("test");
}

因此它将不停地写入test。我将使用IF语句检查是否应该停止它。

是否可以像这样使用Parallel.ForEach

任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

多线程无法达到任何目的,但是如果您坚持:

bool _shouldStop { get; set; } = false;
bool _shouldStopSecondThread { get; set; } = false;

public static Main(string[] args)
{

Thread thread = new Thread(print);
Thread anotherThread = new Thread(anotherPrint);
thread.Start();
anotherThread.Start();

//your code here while the worker writes "Test" to console

if(condition) {
   _shouldStop=true;
   _shouldStopSecondThread=false; 
}
}    
//...

public void print()
{
   while (!_shouldStop)
   {
       Console.WriteLine("test");
   }
   Console.WriteLine("worker terminated");
}

public void anotherPrint()
{
   while (!_shouldStopSecondThread)
   {
       Console.WriteLine("test");
   }
   Console.WriteLine("worker terminated");
}

答案 1 :(得分:0)

您想要的不是很清楚,但是您可以尝试以下方法:

        var parallelDrege = Environment.ProcessorCount;
        while (true)
        {
            Parallel.For(0, parallelDrege, t =>
            {
                Console.WriteLine("test");
            });
        }

将parallelDegre设置为所需的值,并注意每个批次将并行处理,但批次之间是一个必然的过程。

希望获得帮助!