程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 一個極有可能引發ExecutionEngineException的情況

一個極有可能引發ExecutionEngineException的情況

編輯:.NET實例教程


關於ExecuteEngineException,在.Net framework SDK中有這樣的描述:

“執行引擎錯誤是致命錯誤,決不應該發生。此類錯誤主要是在執行引擎被破壞或丟失數據時發生的。系統會隨時引發此異常。在可能的情況下,系統將引發比 ExecutionEngineException 異常能提供更多信息的異常。

應用程序不應引發 ExecutionEngineException。”

從這個描述可以看出,ExecutionEngineException這個異常在正常的程序中應當是不可能發生的,致命錯誤嘛。然而我今天卻就與這個異常來了個多次碰頭。

具體情況大致是這樣的:一個具有查看器(Viewer)功能的COM控件,在.net中使用。這個VIEwer有一個特性,在當前可視區域發生某些變化時,將會觸發兩個事件,而在更特定的情況下,這兩個事件觸發的時間差可能非常之小,幾乎是同時發生。此時外層的.Net程序引發ExecutionEngineException異常的可能性就變得非常之大,基本上每次操作都至少遇上一次,當然也只能遇上一次,因為一遇上就差不多Crash了。

應該還是在.net與COM交互時發生的問題,雖然不清楚具體過程,也可以大概猜想一下:當第一個事件發生的時候,.Net開始對它進行處理,沒等處理完畢,第二個事件又發生了,異常也就誕生了。

知道原因就好辦。加入一個事件掛起機制,使得任意兩個事件的觸發時間間隔不會太小,避免兩個事件幾乎同時觸發的情況再次發生。果然,一試之下再也沒有出現這個異常了。如果有遇上類似現象的,不妨用這個思路試一下。

PS,這裡我使用的環境是.net framework 1.1,目前尚不知在.Net framework 2.0下是否有同樣的現象。


http://www.cnblogs.com/sunwaywei/archive/2006/08/21/482674.Html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved