2010-05-24 35 views
2

我編寫了我的Win32應用程序來測試和調試。我創建了一個具有運行TCP套接字和IBDatabase組件所需的全部功能的數據模塊。在服務應用程序中使用數據模塊

在Win32應用程序環境中成功測試Datamodule後,我試圖將Datamodule掛接到我創建的服務應用程序模板中,但無法使其運行。

有人可能會指出是否使用Datamodule與組件功能封裝主要服務功能的策略是可行的,並給出一個簡單的模板示例如何將它連接起來?

回答

7

您必須在服務啓動事件中創建並初始化您的datamodule。要小心數據模塊不應該打開對話框或類似的東西,否則它將掛起等待永遠不會到來的輸入(有辦法讓服務與用戶桌面通信,但良好的服務應該避免它們)。 但是不看你的代碼,很難說出了什麼問題。

1

是的,您可以在服務應用程序中使用DataModule。
這正是我們的中間層應用服務器。

+0

我可以把套接字服務器上嗎? – 2010-05-24 17:28:32

+1

當然可以。您可以在其上放置任何非可視化組件。查看@ ldsandon的答案。 – 2010-05-24 18:29:23

+0

我們通過代碼創建套接字... – 2010-05-24 18:29:33

2

正如其他人所說,是的,這是絕對有可能的。對於我的實現,我實際上只是將我的數據模塊作爲項目選項中的自動創建。然後我的服務代碼是非常輕的重量和歸結爲這:

procedure TMyService.ServiceStart(Sender: TService; var Started: Boolean); 
begin 
    Started := myDataModule.Startup; 
end; 

procedure TMyService.ServiceStop(Sender: TService; var Stopped: Boolean); 
begin 
    myDataModule.Cleanup; 
    Stopped := True; 
end; 
相關問題