德爾福應用程序共享管理器預留了2020-2039範圍內的20個端口以啓動其通信線程。 我想知道當第21個應用程序在同一臺計算機上啓動時會發生什麼。事實證明,這個應用程序只是停止響應,直到它被殺死,我還沒有找到一種方法來優雅地終止它。德爾福XE8在應用程序啓動時優雅地處理ETetheringException
要複製,只需將TTetheringManager和TTetheringProfile放在空白表單上,將配置文件連接到Manager,編譯,在IDE外啓動應用程序20次,最後在IDE中啓動第21個實例。
這是我迄今發現:
在System.Tether.NetworkAdapter:程序TTetheringNetworkManagerCommunicationThread.Execute; 和當TCP或UDP通信服務器無法啓動時,會引發ETetheringException.Create(SManagerNetworkCreation)。到現在爲止還挺好。
這個異常顯示在調試器中。當我繼續並執行以下代碼時,應用程序最終會掛起System:function AcquireExceptionObject並且永不返回。
由於應用程序Application.Run期間提出,我試圖通過捕獲異常:
try
Application.Run;
except
ShowMessage('Something went terribly wrong!');
end;
但這並沒有工作。任何建議如何我可以捕捉(或防止)此異常?
你應該能夠添加的事件處理應用程序的'OnException'事件和處理異常那裏。 –
感謝您的建議,但這也沒有幫助。我試着設置Application.OnException,但是這個事件處理程序永遠不會被執行。 該異常也可以通過在運行時將TetherManager分配給TetherProfile來觸發,如: 'procedure TForm1.FormShow(Sender:TObject); 開始 嘗試 嘗試 TetheringAppProfile1.Manager:= TetheringManager1; 除了 ShowMessage('Something went wrong here:'); 結束;最後 ShowMessage('最後成功'); 結束; 結束; ' –
男孩這看起來很醜陋:/ 除了最後都沒有達到,應用程序只是掛起。 –