c# - 异步处理 WaitForExit 并获取返回值

标签 c# process return-value exit-code

我有一个函数,它启动一个进程,等待退出然后返回退出代码:

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/

相关文章:

javascript - Angular 和 ASP.NET MVC - 后端收到时参数为空

c# - 如何跟踪 Outlook 服务器上的邮件

c - sem_getvalue()引起的段错误

c# - 扩展数组的最快方法

c# - 如何将自定义 header 添加到 System.Net.Mail SMTP 类?

c# - 获取 Html.AntiForgeryToken 会引发错误 "Server cannot modify cookies after HTTP headers have been sent"

multithreading - 在Perl中实现看门狗

c - 那会错吗?如果是这样,为什么呢?产量为2500

c++ - 运算符返回值问题

sql-server-2008 - 如何将值从动态 SQL 存储过程返回到 Entity Framework ?