我有一个函数,它启动一个进程,等待退出然后返回退出代码:
function int login(string pathtofile)
{
//...
Process process = new Process();
process.StartInfo.FileName = pathtofile;
process.Start();
process.WaitForExit();
return process.ExitCode;
}
这运作良好。但是因为它等待退出,所以它阻塞了窗口窗体(我有一个选框进度条,它继续移动,现在显然停止了)。 我不知道如何异步返回退出代码,并且找不到任何我理解的可能解决方案。
最佳答案
您可以使用此代码:
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
关于c# - 异步处理 WaitForExit 并获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134391/