我們有一種情況,我們的應用程序有時會提出ExecutionEngineException
。我認爲,當它發生時,應用程序應該崩潰,但它不會崩潰。即使事件查看器聲稱應用程序已終止 - 它仍會繼續運行!只是似乎這個冒犯的線程被默默地殺死了。如何讓.NET 4拋出ExecutionEngineException?
問題在於我們無法在發生條件時重新創建條件 - 在發生異常之前執行可疑代碼幾千次。日誌中沒有任何內容。總之 - 我們感到困惑。
我希望能夠隨意產生這個異常,以便了解我們的應用程序在發生時的行爲。當然,它必須由框架本身拋出,發行throw new ExecutionEngineException
不算。
所以,我的問題是 - 我怎樣才能可靠地導致它?請提供代碼示例。
我們對.NET 4中,很快移動到.NET 4.5
我相當相信EEE可以在壓力較小的情況下發生。瀏覽網頁會產生一個動態發出IL代碼的印象,可能會導致此類異常。 – mark
如果越野車「手工製作」的IL代碼是罪魁禍首,那麼首先猜測,您的問題可能會以一致的方式重複出現。這個問題只是「有時」發生,因爲第一個猜測指出了有關耗盡資源或競爭條件的一些問題。無論如何,所有這些都是可能的原因,你將沒有其他辦法,而不是檢查每種可能性,直到找到問題的原因:( – elgonzo