Delphi程式「自殺」的有效辦法

2022-07-01 01:42:10 字數 744 閱讀 2799

某個應用程式a,長期執行後,時不時出現「external exception e06d7363」錯誤,然後程式a就失去了反應,既不工作也不退出。

分析發現,程式a在執行中依賴第三方dll,上述錯誤可能由dll引發,因此無法避免該問題出現。

好在程式a從啟動執行到出錯的時間基本在2天以上,不算頻繁,因此出問題後重啟即可解決。

為此,需要設計乙個程式出錯後自動重啟的機制。思路如下:

為此,需要程式a能在出錯時,自動退出記憶體,實現「」自殺「。

測試發現,程式a會彈出錯誤框等待使用者反饋,自動退出失敗。

繼續分析如何避免程式退出時彈出錯誤框的方法。

網上找到下文,delphi 中利用 seh 遮蔽退出時的 runtime error

採用上文方法,確實能防止退出時彈出異常。

對於普通單執行緒程式,可保障程式靜默退出記憶體。

但是由於程式a是多執行緒程式,採用上述方法未彈出錯誤,但是也無法退出記憶體,即使已將子執行緒全部結束。

網上找到一篇文章,「delphi 查程序、殺程序exe方法,非常有效

嘗試了一下,發現 terminateprocess方法讓程式退出非常有效。最終,實現了程式a在出錯時自動重啟。

出現問題時,解決問題的路徑很多,不要侷限於已知的方法。多查詢別人的解決方案,多嘗試幾次,往往問題解決起來也不難。

Delphi實現程式自銷毀(自殺)

unit unit1 inte ce uses windows,messages,sysutils,classes,graphics,controls,forms,dialogs,stdctrls type tform1 class tform button1 tbutton procedure d...

exe不是有效的Win32程式 解決辦法

問題描述 在pe檔案修改或擴充套件時,最容易出現的錯誤就是,修改好pe檔案後,雙擊開啟卻出現 exe不是有效的win32應用程式 使用 pe explorer工具載入該exe,提示 raw資料大小 檔案映像大小.更新區段 sizeofrawdata 內在值?解決辦法 pefilesize enlar...

Delphi 02 Delphi程式的結構

一 工程檔案 program multiunit uses sysutils,unit1 in unit1.pas begin 引用unit1中的變數,因為是在介面部分定義所以可以引用 strgreet hello world 呼叫unit1中的過程 因為是在介面部分定義所以可以引用 greetin...