illegalPrepareConstrainedRegion MDA
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ısı ile try
arasında açıklamalar gibi kod oluşturmayan bir kaynak olması izin verilir.
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 koşulu veya iş parçacığı iptali durumunda bölge çalışmaz.
Nedeni
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 giriş 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 deseni gösterir.
void MethodWithInvalidPCR()
{
RuntimeHelpers.PrepareConstrainedRegions();
Object o = new Object();
try
{
…
}
finally
{
…
}
}
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin