我有一个启动进程的函数,等待退出并返回exitcode:
function int login(string pathtofile)
{
//...
Process process = new Process();
process.StartInfo.FileName = pathtofile;
process.Start();
process.WaitForExit();
return process.ExitCode;
}
这很好用。但是因为它等待退出,它会阻止窗口形式(我有一个Marquee Progress Bar,它会继续移动,现在已经停止了)。 我不知道如何返回退出代码异步,我无法找到任何我理解的解决方案。
答案 0 :(得分:4)
您可以使用此代码:
void Login(string pathtofile)
{
Process process = new Process();
process.StartInfo.FileName = pathtofile;
process.EnableRaisingEvents = true;
process.Exited += new EventHandler(process_Exited);
process.Start();
}
void process_Exited(object sender, EventArgs e)
{
Process p = (Process)sender;
int exitCode = p.ExitCode;
}
但请注意,Login函数将在启动进程后直接退出,因此您无法返回整数值。您可以在函数process_exited
答案 1 :(得分:0)
您可以注册Process.Exit事件并处理那里的退出代码。
myProcess.EnableRaisingEvents = true;
myProcess.Exited += OnMyProcessExited;
然后从OnMyProcessExited方法返回退出状态