เกี่ยวกับ ExecuteEngineException มีคำอธิบายนี้ใน .net framework SDK:
"ข้อผิดพลาดของกลไกการดำเนินการเป็นข้อผิดพลาดร้ายแรงและไม่ควรเกิดขึ้น ข้อผิดพลาดดังกล่าวส่วนใหญ่เกิดขึ้นเมื่อกลไกการดำเนินการเสียหายหรือข้อมูลสูญหาย ระบบจะส่งข้อยกเว้นนี้เมื่อใดก็ได้ เมื่อเป็นไปได้ ระบบจะส่งข้อยกเว้นที่ให้ข้อมูลมากกว่า ExecutionEngineException
แอปพลิเคชันไม่ควรส่ง ExecutionEngineException
ดังที่เห็นได้จากคำอธิบายนี้ ExecutionEngineException ไม่ควรเป็นไปได้ในโปรแกรมปกติ อย่างไรก็ตาม วันนี้ฉันพบความผิดปกตินี้หลายครั้ง
สถานการณ์เฉพาะเป็นดังนี้: ตัวควบคุม COM พร้อมฟังก์ชันตัวแสดง ที่ใช้ใน .net โปรแกรมแสดงนี้มีฟีเจอร์ที่เมื่อการเปลี่ยนแปลงบางอย่างเกิดขึ้นในพื้นที่ภาพปัจจุบัน สองเหตุการณ์จะถูกทริกเกอร์ ในกรณีที่เจาะจงมากขึ้น ความแตกต่างของเวลาระหว่างการทริกเกอร์ของทั้งสองเหตุการณ์อาจมีน้อยมาก และเกือบจะเกิดขึ้นในเวลาเดียวกัน ในขณะนี้ ความเป็นไปได้ที่โปรแกรม .net ภายนอกจะทำให้ ExecutionEngineException มีสูงมาก โดยพื้นฐานแล้วจะพบอย่างน้อยหนึ่งครั้งในทุกการดำเนินการ และแน่นอนว่าจะพบได้เพียงครั้งเดียวเท่านั้น เพราะเมื่อพบแล้ว เกือบจะพัง
ยังคงควรเป็นปัญหาที่เกิดขึ้นเมื่อ .net โต้ตอบกับ COM แม้ว่าฉันจะไม่ทราบกระบวนการเฉพาะ แต่คุณก็สามารถเดาได้คร่าวๆ ว่า: เมื่อเหตุการณ์แรกเกิดขึ้น .net จะเริ่มประมวลผล และก่อนที่การประมวลผลจะเสร็จสิ้น เหตุการณ์ที่สอง เหตุการณ์เกิดขึ้นอีกและเกิดความผิดปกติขึ้น
มันง่ายกว่าที่จะจัดการถ้าคุณรู้เหตุผล เพิ่มกลไกการระงับเหตุการณ์เพื่อให้ช่วงเวลาทริกเกอร์ของสองเหตุการณ์ใดๆ จะไม่น้อยเกินไปเพื่อหลีกเลี่ยงการเกิดซ้ำของสองเหตุการณ์ที่ทริกเกอร์เกือบจะในเวลาเดียวกัน แน่นอนว่าหลังจากลองหนึ่งครั้ง ความผิดปกตินี้ก็ไม่เกิดขึ้นอีกต่อไป หากคุณพบปรากฏการณ์ที่คล้ายกัน คุณก็อาจลองใช้แนวคิดนี้ได้เช่นกัน
ป.ล. สภาพแวดล้อมที่ฉันใช้ที่นี่คือ .net framework 1.1 ยังไม่ทราบว่าปรากฏการณ์เดียวกันนี้เกิดขึ้นภายใต้ .net framework 2.0 หรือไม่
http://www.cnblogs.com/sunwaywei/archive/2006/08/21/482674.html