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