2012-06-01 82 views
1

關閉Acrobat時出現問題。我正在使用vb.net在運行Acrobat中籤署PDF文件。完成之後,關閉Acrobat並嘗試刪除當前簽名的PDF文件,但收到錯誤消息,告訴我該文件正在被另一個進程使用。我嘗試關閉並設置爲Nothing AcroApp,AcroAVDoc,AcroPDDoc JSO,但仍然無效。我試着用Marshal.ReleaseComObject(...)釋放它們仍然沒有效果。關閉Acrobat時Acrobat.exe進程不終止

 acroPDDoc.Close() 
     acrobatAVDoc.Close(False) 
     acrobatApp.Exit() 

     Try 
      Marshal.ReleaseComObject(javaScriptObj) 
     Catch ex As Exception 
     End Try 

     Try 
      Marshal.ReleaseComObject(acroPDDoc) 
     Catch ex As Exception 
     End Try 

     Try 
      Marshal.ReleaseComObject(acrobatAVDoc) 
     Catch ex As Exception 
     End Try 

     Try 
      Marshal.ReleaseComObject(acrobatApp) 
     Catch ex As Exception 
     End Try 

     javaScriptObj = Nothing 
     acroPDDoc = Nothing 
     acrobatAVDoc = Nothing 
     acrobatApp = Nothing 

低於我不想使用,因爲它會殺死我不希望所有打開的PDF文檔的替代。

'Gets All Acrobat Processes 
Dim tProcess() As Process = System.Diagnostics.Process.GetProcessesByName("Acrobat") 

'Kills Each Acrobat Process 
For Each AcrobatProcess As Process In tProcess 
    AcrobatProcess.Kill() 
Next 

請幫我找到解決辦法。謝謝

+0

你有沒有試過等待幾秒鐘的時間鎖定徘徊 – rerun

+0

是啊等待沒有幫助。它只是掛在那裏。 –

+0

由於您沒有發佈顯示您如何「嘗試關閉並設置爲Nothing」的代碼,因此您如何確切地指望我們幫助您確定它爲何無法正常工作? –

回答

2

我想出了一個類似這樣的解決方案。你可以看看我的例子(下面的鏈接),它可以幫助你的情況。記錄所有打開的雜技演員文檔,然後殺死並重新打開它們。然後,用戶可以手動關閉每個文檔,而無需懸掛Acrobat。這可能不是最好的解決方案,但它是一個可行的解決方案。

VB.Net/Acrobat - Acrobat hangs after user manually exits program

0

確認所有對象都已釋放。我用C#編寫的實用程序遇到了同樣的問題,它使用PDDoc InsertPages方法合併pdf並通過JSObject接口添加書籤。

我發現有一次我發佈了存儲我的bookmarkRoot的對象,即一旦最後一個對象被釋放,Acrobat.exe進程就會釋放它。我不必殺死這個過程。