Çözemediğim bir hata mesajı alıyorum. Visual Studio veya hata ayıklayıcıdan kaynaklanır. Nihai hata durumu VS, hata ayıklayıcı, benim program veya veritabanı olup olmadığından emin değilim.
Bu bir Windows uygulamasıdır. Bir web uygulaması değil.
VS'den gelen ilk mesaj, "Herhangi bir çağrı yığını çerçevesi için hiçbir sembol yüklenmedi. Kaynak kodu görüntülenemiyor." Bu tıklatıldığında, elde: " ContextSwitchDeadlock tespit edildi ", aşağıda uzun bir mesaj ile birlikte.
Hata, bir DataTable'ı tarayan bir döngüde ortaya çıkar. Her satır için, tablodan bir SqlCommand parametresi olarak bir anahtar (HIC #) değeri kullanır. Komut, bir satır döndüren bir SqlDataReader oluşturmak için kullanılır. Veriler karşılaştırılır. Bir hata algılanırsa, ikinci bir DataTable'a bir satır eklenir.
Hata, prosedürün ne kadar sürdüğüyle (yani 60 saniye sonra), kaç hata bulunduğuyla ilişkili görünmemektedir. Bunun bir hafıza sorunu olduğunu düşünmüyorum. Döngü içinde hiçbir değişken bildirilmez. Oluşturulan tek nesneler SqlDataReaders vardır ve bunlar Yapıları kullanmaktadır. Add System.GC.Collect () etkisi olmadı.
Db aynı dizüstü bilgisayarda bir SqlServer sitesidir.
Formda süslü bir gizem veya alet yoktur.
Daha önce onlarca kez yaptığımdan çok farklı olan bu süreçte hiçbir şeyin farkında değilim. Hatayı daha önce gördüm, ama asla tutarlı bir temelde olmadı.
Herhangi bir fikir var mı?
Tam hata metni: CLR, 60 saniye boyunca COM bağlamı 0x1a0b88'den COM bağlamı 0x1a0cf8'e geçiş yapamadı. Hedef içeriğe / daireye sahip olan iş parçacığı büyük olasılıkla ya pompalamayan bir bekleme yapıyor ya da Windows iletilerini pompalamadan çok uzun süre çalışan bir işlem yapıyor. Bu durum genellikle performans üzerinde olumsuz bir etkiye sahiptir ve uygulamanın zaman içinde sürekli olarak birikmesine veya bellek kullanımının birikmesine neden olabilir. Bu sorunu önlemek için, tüm tek iş parçacıklı grup (STA) iş parçacıkları pompalama bekleme ilkelleri (CoWaitForMultipleHandles gibi) kullanmalı ve uzun çalışma işlemleri sırasında mesajları düzenli olarak pompalamalıdır.