在我的部分代码中,我尝试执行一个过程来打开PDF文件。我只有在流程结束时才需要跟进。
最初,我尝试按如下方式设置事件驱动方法:
process = Process.Start(_pdfFilePath);
process.EnableRaisingEvents = true;
process.WaitForExit();
process.Exit += OnProcessExit;
private void OnProcessExit(object sender, EventArgs e)
{
//Calculate and print results
}
然而,最终发生的事情是,事件永远不会被触发(尝试使用和不使用 EnableRasingEvents 和 WaitForExit )。
我的第二种方法感觉不合适,但一见钟情:
process = Process.Start(_pdfFilePath);
process.EnableRaisingEvents = true;
process.WaitForExit();
OnProcessExit();
private void OnProcessExit()
{
// Calculate and print results
}
我假设由于WaitForExit()方法冻结了我的主窗体运行的线程,它将重新创建我需要的结果。但事实证明,计算是在打开文件时打印的,而不是在终止后打印的。
在第三次绝望的尝试中,我只是添加了一张支票如下:
process = Process.Start(_pdfFilePath);
process.EnableRaisingEvents = true;
process.WaitForExit();
if(process.HasExited)
OnProcessExit();
private void OnProcessExit()
{
// Calculate and print results
}
但检查没有效果。
有关为何未正确检测到流程终止的任何想法?这些方法是否仅适用于Windows操作和应用程序?