如何在等待延迟完成的同时启动5个不同的进程,每个进程都有自己的延迟,而不会阻止其他进程? 我不能使用async或等待
foreach(string process1 in _processList)
{
// random delay
Process.Start(process1);
}
答案 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);
我希望这有助于我不是那么多经验丰富的程序员。 也很抱歉,如果发布代码出错,这是我的第一个回复。