C#Windows服務(wù)程序編寫淺析
C#Windows服務(wù)程序編寫是如何實現(xiàn)的呢?
C#Windows服務(wù)程序編寫是一種比較高級的編程技術(shù),內(nèi)部使用了很多Windows操作系統(tǒng)的核心功能,但微軟.NET框架已經(jīng)很好的封裝了這些技術(shù)細(xì)節(jié),使得我們可以很方便的使用C#編寫自己的Windows服務(wù),其基本過程一般為
Windows服務(wù)程序編寫1.創(chuàng)建C#工程。
創(chuàng)建一個EXE工程,可以是WinForm或者命令行格式的。添加對System.ServiceProcess.dll和System.Configuration.Install.dll的引用。
Windows服務(wù)程序編寫2.創(chuàng)建服務(wù)類。
新增一個類,該類型繼承System.ServiceProcess.ServiceBase類型,在構(gòu)造函數(shù)中設(shè)置ServiceName屬性來指明該服務(wù)的名稱。然后重載它的OnStart方法來響應(yīng)啟動服務(wù)的事件,重載OnStop方法來響應(yīng)停止服務(wù)的事件,重載OnPause方法來響應(yīng)暫停服務(wù)的事件,重載OnContinue方法來響應(yīng)恢復(fù)提供服務(wù)的事件。在重載這些方法時必須要立即返回,其中不能出現(xiàn)長時間的操作,若處理時間過長則Windows服務(wù)管理器會覺得該Windows服務(wù)停止響應(yīng)而報錯。為此我們可以使用一個線程來進(jìn)行實際的工作,而OnStart方法創(chuàng)建線程,OnStop方法關(guān)閉線程,OnPause方法掛起線程,而OnContinue方法來恢復(fù)運(yùn)行線程。
Windows服務(wù)程序編寫3.啟動服務(wù)。
在main函數(shù)中調(diào)用“System.ServiceProcess.ServiceBase.Run( 自定義服務(wù)類的實例 )”來運(yùn)行服務(wù)。比如“System.ServiceProcess.ServiceBase.Run( new MyService() )”,這里的MyService就是繼承自ServiceBase。
Windows服務(wù)程序編寫4.安裝服務(wù)。
新增一個類,該類型繼承自System.Configuration.Install.Installer類型,該類型用于配合微軟.NET框架自帶的安裝命令行工具InstallUtil.exe的。我們?yōu)樵擃愋透郊覵ystem.ComponentModel.RunInstallerAttribute特性,并在它的構(gòu)造函數(shù)中使用System.ServiceProcess.ServiceInstaller對象和System.ServiceProcess.ServiceProcessInstaller對象向系統(tǒng)提供該服務(wù)的安裝信息。程序編譯后我們可以使用命令行“InstallUtil.exe EXE文件名”向Windows服務(wù)管理器注冊服務(wù),可以使用命令行“InstallUtil.exe /u EXE文件名”從Windows服務(wù)管理器中注銷服務(wù)。
Windows服務(wù)程序編寫5.編寫服務(wù)客戶端。
這是一個根據(jù)實際情況而可選的過程,由于Windows服務(wù)是沒有用戶界面的,因此我們可以編寫一個具有用戶界面的程序來顯示和控制Windows服務(wù)提供的數(shù)據(jù),并進(jìn)行一些系統(tǒng)設(shè)置等操作。比如對于MS SQL Server,數(shù)據(jù)庫引擎是以服務(wù)的形式存在,而SQL Server企業(yè)管理器就是一個客戶端軟件。
C#Windows服務(wù)程序編寫的基本步驟就向你介紹到這里,希望對你了解和學(xué)習(xí)C#Windows服務(wù)程序編寫有所幫助。
【編輯推薦】