2012-10-01 106 views
1

我在創建一個使用C#4.0框架窗口服務是新的,我做了一個使用DLL文件連接到指紋考勤終端一個Windows應用程序。事件窗口服務處理

但我在如何將Windows應用程序轉換爲Windows服務的困惑。

我跟着教程,我可以運行並安裝一個簡單的服務。但如何在Windows服務中添加新的事件

所以首先我要在我的項目的DLL文件添加引用。 第二i在InitializeComponent方法

private void InitializeComponent() 
    { 
     this.ServiceName = "MyService"; 
     AxBioBridgeSDK.AxBioBridgeSDKX MyBio = new AxBioBridgeSDK.AxBioBridgeSDKX(); 

     MyBio.OnAttTransaction += new AxBioBridgeSDK.IBioBridgeSDKXEvents_OnAttTransactionEventHandler(this.axBioBridgeSDKX1_OnAttTransaction); // this is the event handler function 
    } 

    #endregion 
    private AxBioBridgeSDK.AxBioBridgeSDKX MyBio; 
} 

加入此代碼並在OnStart()我添加代碼以打開與端子連接。 我安裝服務,並嘗試運行它,我得到這個錯誤後:

Windows無法啓動本地計算機上的「服務名」服務。

錯誤1053:服務沒有及時啓動或控制請求。

任何幫助嗎?

+0

一步一步在這裏:http://stackoverflow.com/questions/593454/easiest-language-for-creating-a-windows-service/593803#593803 –

回答

1

Windows服務並不意味着處理用戶界面事件。它們被設計爲在單獨的內存空間中運行並具有不同的憑據。通常他們並不需要用戶先登錄。

你所得到的錯誤是由於你的服務啓動功能不正常行爲的原因,一旦你開始它的服務都將立即停止。

調試服務需要一些不同的技術,然後調試Windows應用程序。您需要先安裝服務並使用服務管理器啓動它,以便您可以對其進行調試。

+0

從設備和服務引發的觸發事件根本沒有獲得用戶交互。我需要此服務以保持連接到終端,以收集在終端上完成的交易登錄。 – Moussalam

+0

看來組件AxBioBridgeSDK.AxBioBridgeSDKX是mfc組件。如果是這樣的話,它會期望一個消息泵和一個服務沒有的窗口。請給我一點這個組件的更多細節 –

+0

請同時發佈一些更多的服務代碼,以便我可以檢查問題並給出正確的答案。 –

0

,這可能是任何數量的東西。檢查事件日誌中是否存在失敗的.net執行,它可能提供有關失敗原因的更多信息。

一些事情,從用戶應用程序將窗口服務時考慮的問題。

  1. 它運行的應用程序的帳戶是不同的,所以安全權限可能是一個因素
  2. 窗口服務,有用戶交互,其中一個桌面應用程序一樣。
  3. 如果服務啓動不夠快,Windows會自動中止該進程,因爲它認爲出現故障。
總之桌面

!=窗口服務!= Web應用程序。每個人都有自己的背景,目的,優勢和弱點。