Не беспокойся.
Все итерации быстро заканчиваются выполнением Method4 (), и вам нужен этот однопоточный.
При таком ограничении это вообще не сценарий для задач или потоков.
Но если предположить, что в Method2 () и / или Method3 () происходит нечто существенное, вы можете заменить цикл for()
на Parallel.For()
и использовать простой lock
вокруг кода процесса:
private static object processLock = new object(); // probably static
public void Method4()
{
lock(processLock)
{
process1.Start();
}
}
Но теперь вы должны остерегаться того, чтобы TPL создавал слишком много потоков. (используйте DegreeOfParallelism в Parallel.For).