Aracılığıyla paylaş


disconnectedContext MDA

Not

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

disconnectedContext YÖNETILEN hata ayıklama yardımcısı (MDA), CLR, COM nesnesiyle ilgili bir isteğe hizmet verirken bağlantısız bir daireye veya bağlama geçiş yapmaya çalıştığında etkinleştirilir.

Belirtiler

Çalışma Zamanı Çağrılabilen Sarmalayıcı (RCW) üzerinde yapılan çağrılar, mevcut oldukları daire veya bağlam yerine geçerli dairedeki temel COM bileşenine teslim edilir. Tek iş parçacıklı daire (STA) bileşenlerinde olduğu gibi, COM bileşeni çok iş parçacıklı değilse, bu bozulmaya ve veri kaybına neden olabilir. Alternatif olarak, RCW'nin kendisi bir ara sunucuysa, çağrı bir HRESULT RPC_E_WRONG_THREAD ile atanmasıyla COMException sonuçlanabilir.

Neden

CLR içine geçiş yapmaya çalıştığında OLE dairesi veya bağlam kapatılır. Bunun nedeni genellikle STA dairelerinin, dairenin sahip olduğu tüm COM bileşenleri tamamen serbest bırakılmadan önce kapatılmasıdır. Bu durum, bir RCW'de kullanıcı kodundan yapılan açık bir çağrının sonucu olarak veya CLR'nin kendisi COM bileşenini düzenlerken (örneğin, ilişkili RCW çöp toplandığında CLR COM bileşenini serbest bıraktığında) oluşabilir.

Çözüm

Bu sorunu önlemek için, uygulama dairede yaşayan tüm nesnelerle tamamlanmadan önce STA'ya sahip olan iş parçacığının sonlandırılmadığından emin olun. Aynı durum bağlamlar için de geçerlidir; bağlamın içinde yaşayan com bileşenleriyle uygulama tamamen tamamlanmadan önce bağlamların kapatılmadığından emin olun.

Çalışma Zamanı üzerindeki etkisi

Bu MDA'nın CLR üzerinde hiçbir etkisi yoktur. Yalnızca bağlantısı kesilmiş bağlamla ilgili verileri bildirir.

Çıktı

Bağlantısı kesilmiş dairenin veya bağlamın bağlam tanımlama bilgisini bildirir.

Yapılandırma

<mdaConfig>
  <assistants>
    <disconnectedContext />
  </assistants>
</mdaConfig>

Ayrıca bkz.