我在Visual Studio項目中添加了一個引用到一些COM庫。現在當我在一個方法中創建和對象時,當程序離開這個方法時,這個COM對象會自動釋放嗎?或者我應該總是手動釋放這些對象? (ReleaseComObject或FinalReleaseComObject?)。發佈COM對象
Q
發佈COM對象
5
A
回答
3
它肯定不是自動完成的,而且在某些情況下,它可能是危險這樣做(通過調用Marshal.ReleaseComObject
)as described in this blog post。
對於In-Proc COM對象,通常不需要釋放COM對象。
對於Out-Proc COM對象,釋放它們可能很重要,以防止出現諸如Office apps failing to shut down after automation from a .NET client之類的問題。
在這種情況下,我會按照上面的鏈接博客文章建議:
如果您正在使用的COM對象的範圍的,單線程的方式,那麼你可以安全地調用ReleaseComObject的上當你完成它的對象時。
但是,如果你正在使用來自多個地點或多個線程的COM對象的應用程序(或在同一進程中的其他應用程序),你不應該調用ReleaseComObject的
2
您可以使用Marshal.ReleaseComObject的: http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.releasecomobject.aspx
相關問題
- 1. 發佈Com對象
- 2. .NET強制COM對象發佈
- 3. DirectX11 COM對象0引用未發佈
- 4. 我是否需要發佈COM Interop對象的內部對象?
- 5. 發佈對象?
- 6. 在已發佈的COM對象上調用調用
- 7. 爲什麼我不能調用發佈COM對象的接口
- 8. 在應用程序崩潰時發佈com對象
- 9. 在COM對象上調用發佈永遠不會返回
- 10. Azure COM對象
- 11. 創建COM對象
- 12. COM對象清理
- 13. 嘲笑COM對象
- 14. COM對象生存
- 15. 使用COM對象
- 16. 訪問COM對象
- 17. TSQL OLE(com)對象
- 18. COM對象錯誤
- 19. C++ COM對象Hotpatching?
- 20. COM對象清理
- 21. Javascript與COM對象
- 22. 使用COM對象
- 23. Com對象異常
- 24. PowerShell的COM對象
- 25. COM對象C++/cli
- 26. 發佈對象數組對象(jQuery/PHP)
- 27. iphone對象c是已發佈對象
- 28. 在另一個COM對象內創建一個COM對象
- 29. 從另一個COM對象中獲取COM對象
- 30. Com。 C#創建類型的COM對象
有更多關於這個[這裏] (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC
備用一些時間來調查,並耐心,因爲文章都是艱難和無聊,如http:// blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –