1. 程式人生 > >“程序已停止工作”問題的解決方法,停止解決方法

“程序已停止工作”問題的解決方法,停止解決方法

bad cati 資源 程序集 mage work x86 img lda

“程序已停止工作”問題的解決方法,停止解決方法

問題

遇到一個程序打不開的錯誤,如圖:

技術分享圖片

問題詳細信息如下:

問題簽名:
問題事件名稱: CLR20r3
問題簽名 01: rdh-idss.exe
問題簽名 02: 1.0.1.0
問題簽名 03: 5510d590
問題簽名 04: RDH-IDSS
問題簽名 05: 1.0.1.0
問題簽名 06: 5510d590
問題簽名 07: 92
問題簽名 08: 10
問題簽名 09: System.BadImageFormatException

解決

1)百度裏查找了很多類似的錯誤,發現彈框總是一樣,詳細信息不盡相同。所以解決此問題的關鍵還是看詳細信息。如上面的詳細信息裏的最後,就可以看到這個錯誤:“System.BadImageFormatException”。

2)在我的程序裏,我加上了全局異常捕獲,後來就沒彈這個問題了(可能出錯的地方不影響整體)。代碼:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += Application_ThreadException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

  

System.BadImageFormatException

在MSDN的Library中找到System.BadImageFormatException,裏面關於這個問題的原因和解決方法已經很清楚。

  • 原因:低版本編譯工具(如 ILDasm.exe 或 installutil.exe)編譯高版本Framework的程序。

    方法:使編譯工具和程序版本相對應。

  • 原因:按加載托管程序集的方法加載非托管程序集。如:Assembly.LoadFile(@"System32\Kernel32.dll")

    方法:使用DllImportAttribute的方法加載非托管程序集。

  • 原因:DLL 或可執行文件作為 64 位程序集加載,但是它包含 32 位特性或資源。 例如,它依靠 COM 互操作或調用 32 位動態鏈接庫中的方法。

    方法:將項目的“平臺目標”屬性設置為 x86(而不是 x64 或 AnyCPU)並重新編譯。

  • 原因:低版本Framework程序集調用高版本程序集。

    方法:確保引發該異常的程序集嘗試加載用兼容版本的 .NET Framework 開發的程序集。

總結

解決打開程序時,提示“程序已停止工作”的問題方法是,在詳細信息裏找到具體的錯誤,然後解決相關的問題。

“程序已停止工作”問題的解決方法,停止解決方法