我正在使用 PDFSharp 创建 PDF。在他们的示例中,他们保存一个 PDF,然后他们开始一个过程来选择您的查看器来打开它。它看起来像这样:
document.Save(fileName);
Process.Start(fileName);
所以在我的测试中,我意识到如果 Acrobat Reader 已经打开,我会收到一个 i/o 异常,因为该进程已经在运行。所以我尝试关注这篇文章: Detecting a Process is already running in windows using C# .net
关于检测过程。所以我把上面的代码改成这样:
document.Save(fileName);
if (System.Diagnostics.Process.GetProcessesByName("AcroRd32.exe").Length == 0)
{
Process.Start(fileName);
}
所以我有两个问题。
1)这不起作用。长度始终为 0,所以我想知道是返回错误的进程还是找不到进程。当我查看任务管理器时,AcroRd32.exe 是正在运行的进程的名称。
2)有没有更好的方法来做到这一点?似乎我正在将此过程硬编码到代码中,并且我不确定是否有更好的方法来捕获其他版本的 Acrobat(例如是否有 64 位版本)或其他 PDF 查看器。
对不起,如果这是菜鸟问题。这个 .NET 对我来说很新。谢谢。