illegalPrepareConstrainedRegion 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.

Yönetilen illegalPrepareConstrainedRegion hata ayıklama yardımcısı (MDA), bir RuntimeHelpers.PrepareConstrainedRegions yöntem çağrısı özel durum işleyicisinin deyiminden try hemen önce olmadığında etkinleştirilir. Bu kısıtlama MSIL düzeyinde olduğundan, çağrı ile tryarasında açıklamalar gibi kod oluşturmayan bir kaynak olması izin verilebilir.

Belirtiler

Hiçbir zaman böyle değil, basit bir özel durum işleme bloğu ( veya catch) olarak kabul edilen kısıtlanmış yürütme bölgesi (finallyCER). Sonuç olarak, bellek yetersiz durumu veya iş parçacığı iptali durumunda bölge çalışmaz.

Neden

CER için hazırlık deseni doğru izlenmiyor. Bu bir hata olayıdır. PrepareConstrainedRegions Özel durum işleyicilerini bloklarına//catchfault/finallyfilter cer eklemek olarak işaretlemek için kullanılan yöntem çağrısı deyiminden try hemen önce kullanılmalıdır.

Çözüm

çağrısının PrepareConstrainedRegions deyiminden hemen önce gerçekleştiğinden try emin olun.

Çalışma Zamanı üzerindeki etkisi

Bu MDA'nın CLR üzerinde hiçbir etkisi yoktur.

Çıktı

MDA yöntemini çağıran PrepareConstrainedRegions yöntemin adını, MSIL uzaklığını ve çağrının deneme bloğunun başlangıcından hemen önce olmadığını belirten bir ileti görüntüler.

Yapılandırma

<mdaConfig>
  <assistants>
    <illegalPrepareConstrainedRegion/>
  </assistants>
</mdaConfig>

Örnek

Aşağıdaki kod örneği, bu MDA'nın etkinleştirilmesine neden olan düzeni gösterir.

void MethodWithInvalidPCR()
{
    RuntimeHelpers.PrepareConstrainedRegions();
    Object o = new Object();
    try
    {
        …
    }
    finally
    {
        …
    }
}

Ayrıca bkz.