2015-06-16 46 views
8

德爾福應用程序共享管理器預留了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; 

但這並沒有工作。任何建議如何我可以捕捉(或防止)此異常?

+0

你應該能夠添加的事件處理應用程序的'OnException'事件和處理異常那裏。 –

+0

感謝您的建議,但這也沒有幫助。我試着設置Application.OnException,但是這個事件處理程序永遠不會被執行。 該異常也可以通過在運行時將TetherManager分配給TetherProfile來觸發,如: 'procedure TForm1.FormShow(Sender:TObject); 開始 嘗試 嘗試 TetheringAppProfile1.Manager:= TetheringManager1; 除了 ShowMessage('Something went wrong here:'); 結束;最後 ShowMessage('最後成功'); 結束; 結束; ' –

+0

男孩這看起來很醜陋:/ 除了最後都沒有達到,應用程序只是掛起。 –

回答