2013-04-06 98 views
0

我有一點奇怪的問題,在我的程序,當我使用以下命令打開PDF文件時:的Visual Studio崩潰打開PDF的第二次

Process.Start("test.pdf"); 

第一次,該文件是打開得很好,但是第二次在任何pdf文件上使用此命令時,在代碼中的任何位置,vshost.exe都會崩潰。

我的下一步是禁用vshost,禁用vshost,應用程序自身崩潰。

當我說'崩潰'我的意思是說它已停止響應。

如果我創建一個新項目,它工作得很好,所以它一定是我的項目有問題?

我在代碼中的其他位置使用iTextSharp庫來創建pdf,這可能是一個原因嗎?

我意識到這個問題很普遍,但我不知道是什麼原因導致它,所以我不知道提供什麼信息。

更多信息:

當我看到調試器的輸出端程序崩潰後,它說:「該方案‘[4320] SmartShelf.exe:管理(v4.0.30319)’已退出,代碼爲-1073741819 (0xc0000005)'訪問衝突'。「

編輯:有沒有人知道任何其他方式使用c#查看pdf?

+0

你爲什麼用''test.pdf''開始一個進程???一個進程必須是可執行文件,而'pdf'不可執行文件... – 2013-04-06 19:27:59

+0

@ bash.d:'Process.Start'是'ShellExecute'的一個包裝器,它接受文檔名並找到關聯的應用程序。 – 2013-04-06 19:33:28

+0

但是肯定還有其他的一些方法......這真是太棒了 – 2013-04-06 19:35:49

回答

0

雖然並不完美,我的最終解決方案是使用顯示在WebBrowser控件PDF,由URL設置爲PDF的路徑

webBrowser1.Navigate("asdf.pdf");

這顯示它在Adobe Reader,但在網絡瀏覽器中。

這個解決方案非常適合我的需求(如果不是更好),並且不會導致應用程序崩潰。感謝大家的建議。

0

在調用start(「asdf.pdf」)之前,我會使用上下文或dispose命令來擺脫任何打開的文件連接並查看是否照顧它。

還要確保你的進程在win7中以管理員身份運行。 另一件你可以嘗試的就是使用process.start(cmd,「aspdf.pdf」)這種方式來啓動一個命令窗口並調用pdf啓動器。

+0

感謝您的回覆。我如何確保一個流程以管理員身份運行? 另外process.start(「cmd」,「aspdf.pdf」)只是啓動命令行。不害怕pdf。 – MarkH 2013-04-06 20:58:06

+0

右鍵點擊該程序並說作爲管理員運行。 – foxjazzHack 2013-04-07 01:07:49

+0

你可以做的一件事情還是創建一個bat文件和process.start批處理文件。並測試批處理文件以運行pdf。 – foxjazzHack 2013-04-07 01:09:22