2011-08-31 132 views
4

今天我在c#中構建了我的第一個Windows服務。Windows服務一般問題

我有幾個問題,我會很高興和thanksfull如果你能幫助我。

1) 當我安裝我的服務,這是乳寧和一切,但它在Windows任務管理器不會顯示出來。任何人都知道爲什麼?

2)如果我試圖把一個系統盤,我不能做到這一點 - 因爲我不能把一個圖標。在窗口服務沒有System.Drawing ..我能做些什麼呢?

3)

protected override void OnContinue() 
{ 
    //eventLog1.WriteEntry("In OnContinue."); 
} 

這是什麼「OnContinue」呢?

我無法理解它。

回答

4

服務沒有出現在Windows任務管理器

我假設你是在Vista/Windows 7中運行,並且您的服務沒有運行爲您的帳戶。因此,您需要在任務管理器的「進程」選項卡上說「顯示所有用戶的進程」,然後您應該看到您的服務(可能在default Windows accounts之一下運行)。

您不會在「應用程序」選項卡中看到您的服務,服務確實在而不是出現在那裏。

托盤圖標的Windows服務

從Windows Vista上,服務不允許與桌面交互;即使你仍然可以這樣做,你與哪一個交互(可以有多個用戶登錄到具有多個桌面的計算機上,認爲終端服務器/多個遠程桌面會話)?

你顯示服務的圖標的方式是創建一個與您的服務(使用類似WCF或遠程處理),這是負責顯示在任務欄中的圖標進行通信的程序。

記住,你的服務更可能不需要圖標在托盤上,創造了Microsoft Management Console一個插件來代替,並通過WCF /遠程處理的服務進行通信。

OnContinue

documentation for the OnContinue method

在派生類中實現,OnContinue運行時一個繼續 命令由服務控制管理器(SCM)發送到服務。 指定服務在暫停後恢復正常功能 時要執行的操作。

基本上,如果你的服務可以暫停(不停止),那麼當服務恢復時調用這個服務。

+0

damit!你回答了我想要的一切!你的帥哥!謝謝allllooottt! –

+0

@Alon M:沒問題,很樂意幫忙。 =) – casperOne

1

1)如果服務顯示在「服務」管理控制檯中運行 - 那麼你應該會看到一個進程在任務管理器的服務。您不會在「應用程序」選項卡上看到任何內容 - 因爲服務在後臺運行。但是,在「進程」選項卡中 - 應該會看到用於安裝服務的可執行文件的條目。

3)Windows服務中的OnContinue()方法定義當服務從「暫停」狀態返回到「已啓動」狀態時將發生的操作。

+0

對於1.,我認爲它將在許多'svchost.exe'進程之一下運行。糾正另外兩個問題(雖然從服務中嘗試與用戶桌面進行交互是不好的做法,所以2可能不是一個好主意......) – jadarnel27

+0

@ jadarnel27 - 我已經寫了幾個服務,並且它們總是顯示在進程列表使用我的項目編譯到的可執行文件的名稱。 – pmartin

+0

哇。我瘋了一樣地獄。我只是在我的PC上查看任務管理器,並且我寫的服務正在以可執行文件名稱運行(如您所說)。爲你+1。 -1對我來說=) – jadarnel27