Используйте Parallel.ForEach без списков

Я хочу использовать Parallel.ForEach как многопоточный метод, который выполняет код без списков или чтения файлов.

Я хочу сделать это так:

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

Так напишу test без остановки. Я буду использовать IF заявление, чтобы проверить, если оно должно быть остановлено или нет.

Можно ли использовать Parallel.ForEach как это?

Любая помощь будет оценена.

Спасибо!

2 ответа

Решение

То, что вы хотите, не очень понятно, но вы можете попробовать этот подход:

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

Задайте для параметра rallelDegre требуемое значение и помните, что каждая партия будет обрабатываться параллельно, но от партии к партии это последовательный процесс.

Надеюсь, это поможет!

Многопоточность этого ничего не даст, но если вы настаиваете:

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");
}
Другие вопросы по тегам