This question already has answers here:
Process.Exited event is not be called
                                
                                    (1个答案)
                                
                        
                        
                            Process.Exited is never called, even though EnableRaisingEvents is set to true
                                
                                    (2个答案)
                                
                        
                                6年前关闭。
            
                    
各位程序员,

我在这上面挠头。我正在使用以下方法启动一个过程。第一个是wkhtmltoimage.exe,然后是wkhtmltopdf.exe。一切都按预期工作,除了Process_Exited并不总是被调用。在我的程序的一次运行中,我多次按下相应的按钮,因此有所有可能的变化:


只有wkhtmltoimage引发了该事件
只有wkhtmltopdf引发了该事件
都做到了
这个事件根本没有提出。


通过任务管理器和调试器,我可以验证
流程始终正确结束。
没有可重复的内容,每次运行都不同。这是我第一次尝试使用流程,也许我做错了什么。幸运的是,解决此问题对于我的应用程序并不重要。

protected Process StartProcess(string FileName, string Arguments)
{
    ProcessStartInfo MyStartInfo = new ProcessStartInfo(FileName, Arguments)
    {
        UseShellExecute = false,
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        RedirectStandardInput = true
    };

    Process Proc = new Process { StartInfo = MyStartInfo };
    Proc.EnableRaisingEvents = true;
    Proc.Exited += (sender, name) => Process_Exited(Proc, Proc.ProcessName);
    Proc.Start();

    return Proc;
}


protected void Process_Exited(object sender, string ProcessName)
{
    Debug.WriteLine("Process_Exited: " + ProcessName);
}

最佳答案

您确定在兴奋过程时您的程序仍在运行。
我怀疑您的程序在调用Process Exited之前是否已结束。

10-06 03:00