日期:2014-05-17 浏览次数:20876 次
private static void KillSelf() //如果只是启用进程运行Update.exe后,当前进程Application.Exit(),可能会由于替换主程序文件时主程序仍未退出而导致更新失败
{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("taskkill /PID " + Process.GetCurrentProcess().Id.ToString());
p.StandardInput.WriteLine("exit");
while (!p.HasExited)//因为这是异步执行的,我在当前的进程中去操作另外的进程,这个属性指的是这个另外的进程是否顺利的完成了其任务
{
p.WaitForExit(1000); //这个进程在退出之前等待1秒,如果此时完成了就退出,如果没有完成,就不退出
}
}