2

各位程序员好,

我正在为这个挠头。我正在使用以下方法来启动一个进程。第一个是 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);
}
4

1 回答 1

0

您确定退出进程时您的程序仍在运行。

我怀疑在调用 Process_Exited 之前您的程序是否已结束。

于 2013-03-28T09:48:50.923 回答