Bazı COM kitaplığına Visual Studio projesinde bir başvuru ekledim. Şimdi bir yöntem oluşturduğumda ve nesne oluşturduğumda, program bu yöntemi terk ettiğinde bu COM nesnesi otomatik olarak serbest bırakılacak mı? Yoksa bu nesneleri her zaman el ile serbest bırakmalı mıyım? (ReleaseComOject veya FinalReleaseComObject?).COM nesnelerini serbest bırakma
cevap
Kesinlikle otomatik bitmedi ve bazı durumlarda as described in this blog post (Marshal.ReleaseComObject
çağırarak) bunu tehlikeli olabilir.
In-Proc COM nesneleri için, genellikle COM nesnelerini serbest bırakmaya gerek yoktur.
Out-Proc COM nesneleri için, onları serbest bırakmak için böyle Office apps failing to shut down after automation from a .NET client olarak sorunları önlemek için önemli olabilir. Bu durumda
, yukarıdaki bağlantılı blog yazısında tavsiye takip ediyorum:sonra güvenle bu konuda ReleaseComObject çağırabilir bir Scoped, tek iş parçacıklı bir şekilde bir COM nesnesi kullanıyorsanız nesne ile işiniz bittiğinde.
Ama uygulamanızda birden fazla yerde veya birden çok iş parçacığı bir COM nesnesi kullanıyorsanız (veya aynı işlemde diğer uygulamalardan) kullanarak, ReleaseComObject
Sen Marshal.ReleaseComObject kullanabilirsiniz: http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.marshal.releasecomobject.aspx
- 1. Bağlantı havuzunda bağlantıları serbest bırakma.
- 2. Bir Mutex'i Serbest Bırakma
- 3. MetroStyle uygulamalarında COM nesnelerini kullanma
- 4. Serbest bırakma dallarını Mercurial'da yönetme
- 5. Serbest bırakma (kendi) anahtar deposu
- 6. COM nesnelerini C# dizisi VB6'ya geçirme
- 7. Powershell'de oluşturulabilen tüm COM nesnelerini nerede bulabilirim?
- 8. Yerel Pencere: Serbest Bırakma Kolu Açık
- 9. Jenkins yuvarlanmadan serbest bırakmaya doğru (LTS) serbest bırakma
- 10. C# .Net4: COM nesnelerini düzgün bir şekilde atama
- 11. UIButton basılı tutma ve serbest bırakma hareketiyle
- 12. Çıkarılmış iş parçacığı yığınını asla serbest bırakma
- 13. Ön serbest bırakma taşlarını nasıl yaratıyorsunuz?
- 14. Bir WPF'yi bir Veritabanı ile Serbest Bırakma
- 15. Her 'foreach' yinelemesinde COM nesnesini serbest bırakmam gerekir mi?
- 16. COM
- 17. İki göstergeli iki nesneye dokunma/serbest bırakma nasıl belirlenir
- 18. Android APK farklı SHA imzalı serbest bırakma APK yapı iken
- 19. Google harita ve facebook serbest bırakma için nasıl çalışıyoruz? Apk
- 20. Maven kullanarak serbest bırakma modunda apk nasıl oluşturulur
- 21. Hudson ve yapılandırmalar (hata ayıklama, serbest bırakma, paralel, vb)
- 22. Kayıt COM birlikte çalışma
- 23. Dinleyicileri serbest bırakmalı mıyım?
- 24. COM
- 25. Python'da COM olayları tüketiliyor
- 26. COM Interop
- 27. C# + COM Etkileşim, deterministik serbestlik
- 28. "COM Interop'a kaydolun" vs "Montaj COM görünür"
- 29. COM istemcisinde bir COM başvuru eklenemiyor mu?
- 30. COM-Interop
Bu konuda daha fazla olduğunu çağırmamalıdır [buradan] (http://stackoverflow.com/questions/1827059/why-use-finalreleasecomobject-instead-of-releasecomobject) – StuartLC
Makaleleri araştırmak ve sabırlı olmak için biraz zaman ayırın. blogs.msdn.com/b/visualstudio/archive/2010/03/01/marshal-releasecomobject-considered-dangerous.aspx –