Используйте 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");
}