2012-06-01 78 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进程就会释放它。我不必杀死这个过程。