延迟启动进程

时间:2015-07-22 14:59:40

标签: c# process delay

如何在等待延迟完成的同时启动5个不同的进程,每个进程都有自己的延迟,而不会阻止其他进程? 我不能使用async或等待

 foreach(string process1 in _processList)
  {
     // random delay
     Process.Start(process1);
    }

2 个答案:

答案 0 :(得分:3)

您可以从不同的线程开始每个进程。

foreach (string process1 in _processList)
{
  Thread t = new Thread(() => 
           {
               Thread.Sleep(/*RANDOM NUMBER*/ 5);
               Process.Start(process1);
           });
  t.Start();
}

这样每个进程在启动之前都会有一个随机计时器,并且没有一个进程因其他进程的启动而延迟。

如果在您的情况下完全不可能启动线程,我建议将您的进程包装到.bat并在此批处理文件中添加睡眠延迟,这样将及时调用所有进程并且将遵守睡眠延迟

答案 1 :(得分:2)

你可以这样做:

static void main()

{
wait(/*here you put the time you want it to delay example in the next ones*/);
Process.start(process1);
wait(2);
Process.start(process2);
wait(3);
Process.start(process3);
wait(4);
Process.start(process4);
wait(5);
Process.start(process5);
}

public static void wait(int x)
{
DateTime t = DateTime.Now;
DateTime tf = DateTime.Now.AddSeconds(x);

while (t < tf)
{
    t = DateTime.now;
}

}

我不知道在执行process1之后是否会启动process2的延迟,但如果确实如此,那么你只需将延迟设置为

Process.start(process1);
wait(1);
Process.start(process2);
wait(1);

我希望这有助于我不是那么多经验丰富的程序员。 也很抱歉,如果发布代码出错,这是我的第一个回复。