Bir kullanıcı aşağıdaki gibi bir hata bildirdiğinde
System.Runtime.InteropServices.SEHException - Harici bileşen bir istisna mı attı?
Bir programcı olarak nedenini belirlemek için yapabileceğim herhangi bir şey var mı?
Senaryo: Bir kullanıcı (şirketimin yazdığı bir programı kullanarak) bu hatayı bildirdi. Bu bir defaya mahsus bir hata olabilir veya olmayabilir. Geçen ay bilgisayarın iki kez 'çalışmayı durdurduğunu' belirttiler. Deneyimlerimden öğrendim, bu açıklamayı tam anlamıyla almamayı çünkü bu genellikle bilgisayarla ilgili birinin beklendiği gibi çalışmadığı anlamına gelir. Bana daha fazla ayrıntı veremediler ve kaydedilmiş herhangi bir hata bulamadım. Dolayısıyla bu hata olabilir veya olmayabilir.
Yığın izlemeden, gerçek hata, herhangi bir birlikte çalışma kodunu doğrudan çağırmayan, ancak nesnenin bir DevExpress Grid'e bağlı bir listenin parçası olabileceği gerçeğiyle karmaşıklaşan bir sınıf oluştururken meydana geldi.
Hata, normalde programı kapatan ancak yok sayma ve devam etme seçeneğine sahip olan işlenmemiş bir istisna rutini tarafından 'yakalandı'. Hatayı görmezden gelmeyi seçtilerse, program çalışmaya devam etti ancak bu rutin bir sonraki çalıştırmada hata yeniden oluştu. Ancak uygulamamızı kapatıp yeniden başlattıktan sonra tekrar olmadı.
Söz konusu bilgisayar, stresli görünmüyordu. Vista Business çalıştırıyor, 2GB belleğe sahip ve Görev Yöneticisine göre bizim uygulamamızla bunun sadece yaklaşık yarısını yaklaşık 200Mb kullanıyordu.
İlgili olabilecek veya olmayabilecek başka bir bilgi daha var. Aynı programın başka bir bölümü, etkin bir şekilde yerel bir dll etrafında bir dotnet sarmalayıcısı olan bir üçüncü taraf bileşenini kullanır ve bu bileşenin bilinen bir sorunu vardır, çok nadiren bir
Korumalı belleği okumaya veya yazmaya çalıştı. Bu genellikle diğer belleğin bozuk olduğunun bir göstergesidir
Bileşen üreticileri, şirket içinde kullandığımız bileşenlerinin en son sürümünde bunun düzeltildiğini, ancak bunun henüz müşteriye verilmediğini söylüyorlar.
Hatanın sonuçlarının düşük olduğu göz önüne alındığında (hiçbir iş kaybedilmez ve programı yeniden başlatmak ve bulunduğu yere geri dönmek en fazla bir dakika sürer) ve müşterinin kısa süre içinde yeni bir sürüm alacağı (güncellenmiş üçüncü ile birlikte) parti bileşeni), açıkça parmaklarımı çarpabilir ve hatanın bir daha oluşmamasını umabilirim.
Ama yapabileceğim başka bir şey var mı?