2009-11-06 37 views

回答

2

我建議你谷歌的不同部分,在網絡上不同的地方有不同的信息焦點(和先進的最新信息級別)。您需要了解以下主題:

  • Windows服務背景:Windows中的服務如何工作。看看它們在用戶界面,系統權限(服務運行的權限以及權限),啓動/關閉以及用戶反饋方面有何不同。

  • 您可能想要在服務中執行的一件事是使用Timer控件執行定期任務。放在窗體上的「普通」計時器不能在服務中使用,因爲該控件必須與UI窗口(服務缺少)一起使用。你必須使用System.Timer控件。 Google瞭解更多信息。我把這個放在這裏,因爲你會浪費幾個小時想知道爲什麼你的計時器不工作,我們所有寫過服務的人都經歷了這個!

  • 調試 - 如何調試服務?有幾個選項。

  • 部署 - 安裝服務與Windows應用程序不同,涉及更多。這不是一個很大的謎團,只是有更多需要擔心的事情。

  • 與用戶的交互 - 服務不使用用戶界面,那麼您將如何使用戶能夠控制服務(配置,啓動/停止,查看日誌等)。

這些是一些想到的主題,如果你仔細閱讀這些內容,你應該沒問題。

我還建議在虛擬機上測試您的服務部署,這樣您就可以知道您的設置有效。

1

我會強烈建議這樣的方法對於調試目的:

Service with console option

很抱歉的鏈路質量,我似乎無法找到堆棧溢出相關的問題。這幫助我編寫和調試我的服務,並在測試環境中監視它們。

2

以下是在C#中創建Windows服務的分步說明。

Easiest language to create a windows service

之後,您可以使用這些指示的服務安裝/命令行卸載本身,而不是使用InstallUtil可執行文件。

How to make a .NET Windows Service start right after the installation?

如果你要調試的服務,把呼叫System.Diagnostics.Debugger.Break()在你的Windows服務的Main()功能。當您從Windows服務MMC啓動服務時,程序化斷點將觸發一個對話框,允許您啓動新的調試會話(或使用Visual Studio的現有實例)。通常的注意事項 - 確保編譯調試,確保你在本地機器上有調試權限等。如果你想跳過Main()的啓動邏輯,你可以把編程斷點放在你的服務的構造函數或OnStart()回調函數中。

0

看看Topshelf

Topshelf是一個託管使用.NET框架編寫的服務的框架。簡化了服務的創建,允許開發人員創建一個簡單的控制檯應用程序,該應用程序可以使用Topshelf作爲服務進行安裝。原因很簡單:調試控制檯應用程序比服務更容易。一旦應用程序經過測試並準備投入使用,Topshelf可以輕鬆地將應用程序作爲服務安裝。

相關問題