【问题标题】:Visual Studio crashes when opening PDF for second time第二次打开 PDF 时 Visual Studio 崩溃
【发布时间】:2013-04-08 07:21:12
【问题描述】:

在我的程序中,当我使用以下命令打开 PDF 文件时,我遇到了一个奇怪的问题:

 Process.Start("test.pdf");

第一次,文件打开得很好,但第二次我在任何 pdf 文件上使用此命令,在代码中的任何位置,vshost.exe 崩溃。

我的下一步是禁用 vshost,在禁用 vshost 的情况下,应用程序自身崩溃。

当我说“崩溃”时,我的意思是它已停止响应。

如果我创建一个新项目,它可以正常工作,那么我的项目一定有问题吗?

我在代码的其他位置使用iTextSharp 库来创建 pdf,这可能是原因吗?

我知道这个问题很普遍,但我不知道是什么原因造成的,所以我不知道要提供什么信息。

更多信息:

当我在程序崩溃后查看调试器的输出时,它显示“程序 '[4320] SmartShelf.exe: Managed (v4.0.30319)' 已退出,代码为 -1073741819 (0xc0000005) '访问冲突'。 "

编辑:有人知道使用 c# 查看 pdf 的任何其他方式吗?

【问题讨论】:

  • 你为什么要用"test.pdf"开始一个进程???进程必须是可执行文件,而pdf 不是可执行文件...
  • @bash.d: Process.StartShellExecute 的包装器,它接受文档名称并查找关联的应用程序。
  • 但一定有别的办法……这太荒唐了
  • @MarkH 没有解决方案,但我只记得我遇到过一些类似的问题,问题的原因是 Adob​​e Reader 的某些特定版本。您是否尝试更改默认 pdb 查看器并查看这是否能解决您的问题?
  • 我不介意如何打开 PDF,所以如果有人知道我可以使用的另一种方法,我会试一试。

标签: c# pdf visual-studio-2012 process itextsharp


【解决方案1】:

在调用 start("asdf.pdf") 之前,我会使用 using context 或 dispose 命令删除任何打开的文件连接,看看是否可以解决问题。

还要确保您的进程在 win7 中以管理员身份运行。 您可以尝试的另一件事是使用 process.start(cmd, "aspdf.pdf") 以这种方式启动命令窗口并调用 pdf 启动器。

【讨论】:

  • 感谢您的回复。我如何确保进程以管理员身份运行? process.start("cmd", "aspdf.pdf") 也只是启动命令行。恐怕不是pdf。
  • 您还可以做的一件事是创建一个 bat 文件并 process.start 批处理文件。并测试批处理文件以运行 pdf。
【解决方案2】:

虽然不完美,但我最终的解决方案是在 webBrowser 控件中显示 pdf,方法是使用

将 URL 设置为 PDF 的路径

webBrowser1.Navigate("asdf.pdf");

这会在 adobe reader 中显示,但在 web 浏览器中显示。

这个解决方案非常适合我的需求(如果不是更好的话)并且不会导致应用程序崩溃。谢谢大家的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多