为什么Process.WaitForExit不等待?
static void Main(string[] args)
{
while (true)
{
try
{
if (Process.GetProcessesByName("ServerAPPFileManager").Length > 0)
{
Process clsProcess = Process.GetProcessesByName("ServerAPPFileManager")[0];
Console.WriteLine(clsProcess.ProcessName);
clsProcess.WaitForExit();
}
if (System.IO.File.Exists(System.IO.Path.Combine(Environment.CurrentDirectory, "ServerAPPFileManager.exe")))
{
Console.WriteLine("File Found");
Process p = new Process();
p.StartInfo.Verb = "runas";
p.StartInfo.FileName = System.IO.Path.Combine(Environment.CurrentDirectory, "ServerAPPFileManager.exe");
p.Start();
}
}
catch(Exception e)
{
Console.Write(e.Message);
System.Threading.Thread.Sleep(1000);
}
}
}
它不断循环并一次又一次地启动应用程序!
修改
它现在有用了,它没有用,因为它就像这个clsProcess.WaitForExit(1000);
答案 0 :(得分:5)
此代码包含在while(true)
循环中,循环体内没有break
,throw
或return
语句。它确实会导致无限循环。
如果要在WaitForExit
完成后退出循环,则需要引入break
语句来执行此操作。
clsProcess.WaitForExit();
break;
答案 1 :(得分:0)
检查if (Process.GetProcessesByName("ServerAPPFileManager").Length > 0)
是否返回false。
答案 2 :(得分:0)
嗯,这就是你编码的方式。它正在等待退出,然后在下一个if语句中再次启动它。正如杰瑞德所指出的那样,它一直无法突破。所以它启动它,等待它退出,然后再次启动
答案 3 :(得分:0)
问题可能是您没有在您创建的Process对象上调用WaitForExit,而是在Process.GetProcessesByName()返回的Process对象上调用。相反,尝试:
Process p = new Process();
// etc
p.Start();
p.WaitForExit();
答案 4 :(得分:0)
在while语句中删除它并将其添加到计时器中..验证是否process.hasexited = true然后再次调用您的进程,验证是否process.responding = true然后等待其他强制进程kill