Aplikasi .NET yang menggunakan objek COM mungkin menghadapi AccessViolationExceptions
. Walaupun dengan try-catch
sekatan, pengecualian ini mungkin tidak dapat ditangkap, yang membawa kepada pemecahan penyahpepijat semasa panggilan kaedah. Tingkah laku ini berpunca daripada mekanisme Corrupted State Exceptions (CSE) .NET 4.0. Pasukan CLR Microsoft menasihatkan agar tidak cuba mengendalikan CSE dalam kod terurus, kerana ia menandakan keadaan proses yang terjejas. AccessViolationException
termasuk dalam kategori CSE.
Berikut ialah beberapa pendekatan untuk menguruskan situasi ini:
Sasaran .NET Framework 3.5: Susun semula aplikasi anda untuk .NET Framework 3.5 dan laksanakan dalam persekitaran .NET 4.0.
Ubah suai Konfigurasi Aplikasi: Sertakan entri berikut dalam fail konfigurasi aplikasi anda (.config
):
<code class="language-xml"><legacycorruptedstateexceptionspolicy enabled="true" /></code>
Tetapan enabled="true"
membolehkan gelagat warisan untuk menangkap pengecualian ini.
HandleProcessCorruptedStateExceptions
Atribut: Anotasi kaedah yang terdedah kepada pengecualian ini dengan atribut HandleProcessCorruptedStateExceptions
:<code class="language-csharp">[HandleProcessCorruptedStateExceptions] public void MyComMethod() { ... }</code>
Dengan melaksanakan salah satu daripada penyelesaian ini, anda boleh menangkap dan mengendalikan dengan berkesan AccessViolationExceptions
yang timbul daripada interaksi objek COM.
Atas ialah kandungan terperinci Bagaimana saya mengendalikan AccessViolationExceptions dalam .NET semasa menggunakan objek COM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!