SORU
23 ŞUBAT 2009, PAZARTESİ


Visual Studio: ContextSwitchDeadlock

Çözemez bir hata iletisi alıyorum. Visual Studio veya hata kaynaklanıyor. Nihai hata durumu VS, debugger, benim program, ya da veritabanında olup olmadığından emin değilim.

Bu bir Windows uygulaması. Değil bir web uygulaması.

VS ilk mesaj pop-up kutusu bir söz vardır: "Hiçbir simge için çağrı yığını çerçeve yüklenir. Kaynak kodu görüntülenemiyor." O uzakta tıklandığında, ben alıyorum: "ContextSwitchDeadlock tespit edildi"uzun bir mesaj ile birlikte yeniden aşağıda.

Hata bir DataTable aşağı tarayan bir döngü ortaya çıkar. Her satır için bir anahtar kullanır (HİC #) bir SqlCommand için bir parametre olarak tablodan değer. Komut satırı döndüren bir SqlDataReader oluşturmak için kullanılır. Veri karşılaştırılır. Eğer bir hata algılanırsa, bir satır ikinci bir DataTable eklenir.

Hata yordamı değil kaç hata buldum (yani sonra 60 sn) çalıştırmak için gereken ne kadar ilgili gibi görünüyor. Bir bellek sorunu olduğunu sanmıyorum. Hiçbir değişken döngü içinde ilan edilir. Oluşturulan nesneler SqlDataReaders ve yapıları Kullanarak. Sistemi Ekleyin.GC.() Toplamak hiçbir etkisi olmadı.

Db aynı dizüstü bilgisayarda SQL Server bir sitedir.

Formda süslü Aletler ya da araçlar var.

Büyük ölçüde daha önce defalarca yaptığım şeyi farklı olan bu işlem, hiçbir şeyden haberim yok. Önce hata, ama asla tutarlı olarak gördüm.

Herhangi bir fikir var mı?

Tam hata Metni: CLR, 60 saniye COM bağlamında geçiş COM içeriği 0x1a0cf8 için 0x1a0b88 için başarılı olamadı. Hedef içerik/Daire sahibi olan iş parçacığı büyük ihtimalle de olmayan bir pompalama bekle işin yoksa Windows mesajları pompa olmadan çok uzun süren bir işlem. Bu durum genel olarak olumsuz bir etkisi vardır ve hatta duyarlı olmayan ya da bellek kullanımı zaman içinde sürekli biriken olma uygulamasına neden olabilir. Bu sorunu önlemek için, akıtılan grup (STA) tek iş parçacığı pompalama bekle ilkel (CoWaitForMultipleHandles gibi) kullanın ve düzenli olarak uzun süren operasyonlar sırasında mesaj pompa gerekir.

CEVAP
23 ŞUBAT 2009, PAZARTESİ


Bu ContextSwitchDeadlock mutlaka kodunuzu bir sorun var, sadece bir potansiyel olduğu anlamına gelmez< Hata Ayıklama giderseniz . Menü ve genişletme özel durumlar "hata Ayıklama Yardımcıları", bulacaksınız ContextSwitchDeadlock etkindir. Yönetilen Eğer bu devre dışı bırakırsanız, VS artık öğeleri uzun bir zaman süreci için ayırdığınız zaman sizi uyaracaktır. Bazı durumlarda geçerli uzun süren bir işlem olabilir. Eğer bu işlem sırasında bir çizgi üzerinde durdu hata ayıklama da yararlı değil - bu bir sorun kazmak için bir şans yaşadım önce şikayet etmek istemiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010