我有一個服務在客戶上運行,特別是我注意到一個奇怪的行爲。在關閉服務之前,必須執行關閉例程(OnStop),然後在FormDestroy中輸入。然而,在這個客戶中,服務意外終止(我知道這是因爲FormDestroy一直在調用),但是沒有進入服務關閉的例程。意外調用表單銷燬
望着堆,似乎一切正常:
01388f14 ****.exe Main****. 32766 TF****.FormDestroy 00506cbd ****.exe Forms TCustomForm.DoDestroy 00506b23 ****.exe Forms TCustomForm.BeforeDestruction 00404c95 ****.exe System @BeforeDestruction 007a6a02 ****.exe dxRibbonForm 445 TdxCustomRibbonForm.Destroy 00487eaa ****.exe Classes TComponent.DestroyComponents 00504a33 ****.exe Forms DoneApplication 0045da9d ****.exe SysUtils DoExitProc 00405683 ****.exe System @Halt0 01435465 ****.exe Main**** 289 initialization 75773388 kernel32.dll BaseThreadInitThunk
我可以看到在Windows事件查看器此消息:
從源事件ID 0說明***不能找到。引發此事件的組件未安裝在本地計算機上或安裝已損壞。您可以在本地計算機上安裝或修復組件。
如果事件發生在另一臺計算機上,顯示信息必須與該事件一起保存。
以下信息包括與事件:
擴展處理程序註冊
你能不能給我一個提示,找出可能發生的?
讓我們從您的代碼開始。你能分享一下你的服務如何停止嗎?沒有它,我懷疑除了你自己以外的任何人都能猜出問題所在。 – 2014-10-27 13:32:05
@DavidHeffernan服務可以有圖形用戶界面...也許這對他們來說不是「明智的」,但是說他們是「不允許的」是錯誤的,在這裏沒有幫助。 – Ian 2014-10-27 13:46:09
@ Ian號服務不能有GUI。它們在會話零時運行,這不是交互式的。 – 2014-10-27 13:58:27