Apabila menggunakan Visual Studio 2010 untuk membuat aplikasi Windows Forms baru pada sistem Windows 64 -bit, ia mungkin menghadapi masalah yang belum dipaparkan dan tidak bersedia. Apabila kod tidak diproses dalam kod dalam program pemprosesan acara beban, program akan melangkau garis kod masalah dan terus berjalan tanpa sebarang kesilapan. Ini berbeza daripada tingkah laku gangguan debugger yang diharapkan dan paparan luar biasa maklumat yang tidak disengajakan.
analisis punca akar
Tingkah laku yang tidak normal ini berasal dari lapisan simulasi WOW64 (Windows-on-Windows 64-bit) untuk berinteraksi dengan kod 32-bit yang berjalan pada sistem 64-bit. Apabila pengurus tetingkap 64 -bit mencetuskan pemberitahuan, kod tindak balas (seperti program pemprosesan acara beban) dilaksanakan dalam persekitaran 32 -bit. Sekiranya keabnormalan berlaku dalam kod 32 -bit ini, lapisan WOW64 mungkin menelan kelainan dan menghalang debugger daripada mengesannya.
kaedah penyelesaian dan perubahan
Tetapkan sasaran platform sebagai anycpu dan membatalkan yang dipilih "lebih suka 32 -bit":
navigasi ke projek & gt; Tetapkan sasaran platform ke AnyCPU.
Pilih kotak semak CLR Abnormal "Disebabkan".
Ini akan menggantung pelaksanaan debugger mandatori dalam mana -mana garis tidak normal CLR, tanpa mengira lokasinya dalam program pemprosesan acara beban.Gunakan Failfast untuk memaparkan mesej ralat di blok tangkapan dan tiba -tiba menamatkan permohonan.
Ini akan dilumpuhkan penangkapan abnormal yang dilumpuhkan dalam kitaran mesej semasa debugging.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
re -menilai sama ada kod anda benar -benar perlu diletakkan dalam program pemprosesan acara beban.
Keterangan tambahan:
Atas ialah kandungan terperinci Mengapa mesej pengecualian hilang dalam aplikasi Windows WinForms 64-bit menggunakan VS2010?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!