Windows服務應用程式

2022-09-21 12:51:12 字數 2859 閱讀 1928

專案中要實現乙個定時任務的需求,目前c#定時任務的框架有很多比如hangfire、quartz.net等,其中hangfire提供視覺化的面板、重試操作並且其可以寄宿在各種宿主應用程式中。但是專案是要定時獲取其他系統資料到本系統,功能簡單,所以為了不引入太複雜的框架和增加學習成本的考慮,使用微軟提供的windows服務應用程式結合timer元件來完成該需求。通過專案的使用過程對windows服務應用程式加深認識、實際應用的實踐進行總結一下。

microsoft windows 服務(過去稱為 nt 服務)允許使用者建立可在其自身的 windows 會話中長時間執行的可執行應用程式。 這些服務可在計算機啟動時自動啟動,可以暫停和重啟,並且不顯示任何使用者介面。 這些功能使服務非常適合在伺服器上使用,或者需要長時間執行的功能(不會影響在同一臺計算機上工作的其他使用者)的情況。 還可以在與登入使用者或缺省計算機帳戶不同的特定使用者帳戶的安全性上下文中執行服務。

我們電腦的任務管理器中服務項,包含系統正在執行和已停止的後台服務,其是無視覺化介面,通過設定服務屬性中啟動型別(自動、手動、禁用、延遲),自動是系統啟動的時候相應的服務也會自動啟動。

1、建立服務,在vs中建立乙個windows服務應用程式、選擇相應框架版本、在解決方案中會生成對應名稱的服務設計窗體,通過屬性設定服務名稱等項。在**中包含onstartonstop方法,就是服務的啟動和停止方法,在相應的方法中加入業務邏輯,在設計器中引入timer元件,timer元件是基於伺服器的計時器,它允許指定在elapsed應用程式中引發事件的重複間隔。 然後,你可以處理此事件以提供常規處理。通過timer元件的elapsed的產生時間達到定時任務的效果。

/// /// 開始服務

///

///

protected override void onstart(string args)

/// /// 拉取中颱的資料

///

///

///

public void pulldatahandler(object source, system.timers.elapsedeventargs e)

}catch (exception ex)

}/// /// 拉取中颱的資料

///

public void pulldatahandler()

}catch (exception ex)

}/// /// 結束服務

///

protected override void onstop()}}

2、註冊服務,就是要將服務註冊到登錄檔中(任務管理),在專案中新增「安裝程式類」,會在專案中建立projectinstaller.cs類,在相應窗體設計器上生成了serviceinstallerserviceprocessinstaller元件,其中serviceinstaller屬性中要繫結建立的服務名稱一致與選擇服務的啟動方式,serviceprocessinstaller中選擇賬戶型別指定服務在計算機的系統帳戶、本地或網路服務帳戶或使用者帳戶下執行。

3、執行命令,對windows服務應用程式進行重新生成打包,在debug或者release檔案可以找到相應的exe可執行檔案,使用powershell或者installutil.exe進行安裝(執行命令列指令碼的時候必須選擇以管理員的方式執行),命令列指令碼如下所示。

// 安裝命令列

%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe %~dp0ztdatapullservice.exe

net start ztdatapullservice

sc config ztdatapullservice start= auto

pause

//解除安裝命令

%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe /u %~dp0ztdatapullservice.exe

pause

windows服務應用程式是微軟提供對於在要長期執行後台程式的解決方式,通過結合timer元件實現定時任務的效果,其無視覺化介面,可以將日誌訊息記錄到事件日誌中,上述描述乙個服務使用的demo,具體內容參考微軟文件,全面介紹方法,屬性等內容。

如何 除錯 Windows 服務應用程式

除非知道程序是什麼,並且知道附加到程序或可能取消程序所帶來的後果,否則不要附加到程序。例如,如果附加到 winlogon 程序,然後停止除錯,系統就會暫停,因為沒有 winlogon,系統無法執行。只能將偵錯程式附加到正在執行的服務。附加程序會中斷服務的當前執行 它並不真正終止或暫停服務的處理。也就...

windows應用程式框架

windows作業系統是一種圖形化介面 windows程式設計是一種完全不同於傳統dos方式的程式設計方式 其內部執行原理為事件驅動的程式設計模式,主要是基於訊息的,當使用者需要完成某種功能時,呼叫作業系統的某種支援 windows api windows產生的任何資源 要占用或大或小一塊記憶體 作...

建立windows應用程式的後台系統服務

應用程式有兩種,一種本身就可以當服務執行的,就直接使用srvinstw.exe就行。另一種是不能當服務執行的,就必須通過srvany.exe進行跳轉,跳轉執行流程 srvinstw.exe建服務,指向執行srvany.exe,再通過改登錄檔,把真實要執行的程式指向給srvany.exe程式。當啟動服...