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 try
arası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 (finally
CER). 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//catch
fault
/finally
filter
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
{
…
}
}