您好,登錄后才能下訂單哦!
小編給大家分享一下C#Windows服務(wù)程序如何編寫,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
C#Windows服務(wù)程序編寫是一種比較高級(jí)的編程技術(shù),內(nèi)部使用了很多Windows操作系統(tǒng)的核心功能,但微軟.NET框架已經(jīng)很好的封裝了這些技術(shù)細(xì)節(jié),使得我們可以很方便的使用C#編寫自己的Windows服務(wù),其基本過程一般為
Windows服務(wù)程序編寫1.創(chuàng)建C#工程。
創(chuàng)建一個(gè)EXE工程,可以是WinForm或者命令行格式的。添加對(duì)System.ServiceProcess.dll和System.Configuration.Install.dll的引用。
Windows服務(wù)程序編寫2.創(chuàng)建服務(wù)類。
新增一個(gè)類,該類型繼承System.ServiceProcess.ServiceBase類型,在構(gòu)造函數(shù)中設(shè)置ServiceName屬性來指明該服務(wù)的名稱。然后重載它的OnStart方法來響應(yīng)啟動(dòng)服務(wù)的事件,重載OnStop方法來響應(yīng)停止服務(wù)的事件,重載OnPause方法來響應(yīng)暫停服務(wù)的事件,重載OnContinue方法來響應(yīng)恢復(fù)提供服務(wù)的事件。在重載這些方法時(shí)必須要立即返回,其中不能出現(xiàn)長(zhǎng)時(shí)間的操作,若處理時(shí)間過長(zhǎng)則Windows服務(wù)管理器會(huì)覺得該Windows服務(wù)停止響應(yīng)而報(bào)錯(cuò)。為此我們可以使用一個(gè)線程來進(jìn)行實(shí)際的工作,而OnStart方法創(chuàng)建線程,OnStop方法關(guān)閉線程,OnPause方法掛起線程,而OnContinue方法來恢復(fù)運(yùn)行線程。
Windows服務(wù)程序編寫3.啟動(dòng)服務(wù)。
在main函數(shù)中調(diào)用“System.ServiceProcess.ServiceBase.Run( 自定義服務(wù)類的實(shí)例 )”來運(yùn)行服務(wù)。比如“System.ServiceProcess.ServiceBase.Run( new MyService() )”,這里的MyService就是繼承自ServiceBase。
Windows服務(wù)程序編寫4.安裝服務(wù)。
新增一個(gè)類,該類型繼承自System.Configuration.Install.Installer類型,該類型用于配合微軟.NET框架自帶的安裝命令行工具InstallUtil.exe的。我們?yōu)樵擃愋透郊覵ystem.ComponentModel.RunInstallerAttribute特性,并在它的構(gòu)造函數(shù)中使用System.ServiceProcess.ServiceInstaller對(duì)象和System.ServiceProcess.ServiceProcessInstaller對(duì)象向系統(tǒng)提供該服務(wù)的安裝信息。程序編譯后我們可以使用命令行“InstallUtil.exe EXE文件名”向Windows服務(wù)管理器注冊(cè)服務(wù),可以使用命令行“InstallUtil.exe /u EXE文件名”從Windows服務(wù)管理器中注銷服務(wù)。
Windows服務(wù)程序編寫5.編寫服務(wù)客戶端。
這是一個(gè)根據(jù)實(shí)際情況而可選的過程,由于Windows服務(wù)是沒有用戶界面的,因此我們可以編寫一個(gè)具有用戶界面的程序來顯示和控制Windows服務(wù)提供的數(shù)據(jù),并進(jìn)行一些系統(tǒng)設(shè)置等操作。比如對(duì)于MS SQL Server,數(shù)據(jù)庫(kù)引擎是以服務(wù)的形式存在,而SQL Server企業(yè)管理器就是一個(gè)客戶端軟件。
以上是“C#Windows服務(wù)程序如何編寫”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。