Sonuç olarak, uygulamayı sonlandırmak için bir sonlandırıcıda bir istisna atabilen bir hatalı kütüphaneyle sorun yaşıyorum.Başka bir AppDomain uygulamasında yakalanmamış bir istisnanın uygulamayı kapatmasını engelleyebilir miyim?
Bundan kaçınmak için, kütüphaneyi kendi AppDomain alanına yüklemeyi denedim, ancak istisna hala yüzeye kabarcıklar ve uygulamayı çöker.
MSDN'de belgelendiği gibi, AppDomain.UnhandledException
'a kaydolmak istisnanın kösteklenmesini engellemez, ancak "alt UygulamaAlanı'nda" böyle bir istisnayı yakalamanın başka bir yolu olmadığına şaşıyorum.
Eklenti barındıran veya potansiyel olarak zararlı kodları engellemek için AppDomains kullanan uygulamalar, işlenmeyen özel durumları durdurmak için ne yapar? Aslında mümkün mü?
Not Not: Zaten here açıklanan bir başka geçici çözüm var. Kötü sonlandırıcı, yalnızca kapatma sırasında toplanmış gibi görünen uzun ömürlü bir nesnedir, bu nedenle bu "sahte" hatayı kullanıcıdan gizlemek yeterlidir. Yine de, bu geçici çözümü kırılgan buluyorum, çünkü nesne daha önce toplanmışsa, diğer hataları, ya da uygulamaumu şişirmek riskini gizleyecektir.
Neden istisnayı yakalayamıyorsunuz – rerun
İstisna, CLR tarafından yönetilen kendi iş parçacığında çalışan bir Finalizer'a atılıyor, bu yüzden iş parçacığına bir istisna işleyicisi koyamıyorum. Ayrıca, bu, "kaynak kodu olmayan" eski, unmaintaiend ve önemli bir bileşen "bir kütüphane ... –