SORU
9 Mayıs 2010, Pazar


ContextSwitchDeadlock hata Algılandı C#

C çalıştırıyorum# uygulama ve çalıştırma aşağıdaki hatayı alıyorum sırasında

CLR, 60 saniye COM bağlamında geçiş COM içeriği 0x20e5f0 için 0x20e480 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.

Herkes bu konuda lütfen bana yardım edebilir mi?

Çok teşekkürler.

CEVAP
9 Mayıs 2010, Pazar


Programın ana iş parçacığı meşgul bir dakika için kod yürütmektedir. Normal görevlerini dikkat, ileti döngüsü pompalama alıyor. Bu bir iş parçacığı COM sunucuları kullandığınızda yasadışı: ana iş parçacığı boşta tekrar gidene kadar sevk edilemez yöntemlerini çağırır.

Kolay görünür, UI buz gibi soğuk olması gerekir. Windows görüntüleyen bir hayalet ile ana pencere değiştirilmesi gerektiğini "Yanıt vermiyor". Pencere çalışmaz kapanış, Hayır ' ı tıklatın olayları herhangi bir etkisi yoktur.

Ana konu her ne yapıyorsa bir iş parçacığı tarafından yerine yapılmalıdır. BackgroundWorker sınıf, çok çeşitli kullanım MSDN Kitaplığı makale yardım için bulabilirsiniz bu iş için iyi. Tüm Ara hata Ayıklama kullanın, eğer ana konu ne yapıyor hiçbir fikrim yok Windows iş Parçacığı, hata Ayıklama.

Bir daha olası neden: emin VS2005 RTM sürümünü kullanıyorsanız, service pack 1 yükleyin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FND Films

    FND Films

    2 Mayıs 2006
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012