c#創(chuàng)建windows服務(wù)入門教程實(shí)例
用c#中創(chuàng)建一個(gè)windows服務(wù)非常簡(jiǎn)單,與windows服務(wù)相關(guān)的類都在System.ServiceProcess命名空間下。
每個(gè)服務(wù)都需要繼承自ServiceBase類,并重寫相應(yīng)的啟動(dòng)、暫停、停止等方法。
windows服務(wù)的相關(guān)信息是存放與注冊(cè)表中的,所以他可以在不需要用戶登錄的情況下自動(dòng)運(yùn)行,在c#中你不需要再直接向注冊(cè)表中添加信息了,c#提供了服務(wù)安裝類 ServiceProcessInstaller和ServiceInstaller來實(shí)現(xiàn)服務(wù)的安裝。
首先,用vs創(chuàng)建一個(gè)windows服務(wù)項(xiàng)目
成功后你可以看到
Program中只包含服務(wù)運(yùn)行的相關(guān)信息
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()//這里是一個(gè)數(shù)組,意味著我們可以在一個(gè)服務(wù)進(jìn)程中創(chuàng)建多個(gè)服務(wù)實(shí)例,只需要在這里加上即可
};
ServiceBase.Run(ServicesToRun);
}
Service1.cs就是我們需要的服務(wù)類,與windows服務(wù)相關(guān)的基本操作大都可以在這里找到,如:Start,Stop,Pause,Continue等,我們要做的就是根據(jù)這些操作做不同的處理就可以了。
我們先在服務(wù)Start和Stop時(shí)分別記錄一條信息到D盤
protected override void OnStart(string[] args)
{
File.AppendAllText("d:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 服務(wù)啟動(dòng)"));
}
protected override void OnStop()
{
File.AppendAllText("d:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss 服務(wù)停止"));
}
一個(gè)簡(jiǎn)單的服務(wù)就完成了,下一步添加安裝信息
雙擊項(xiàng)目中的Service.cs轉(zhuǎn)到服務(wù)設(shè)計(jì)界面,在空白處右鍵選擇“添加安裝程序”
vs會(huì)自動(dòng)創(chuàng)建一個(gè)默認(rèn)名稱為ProjectInstaller.cs的文件并轉(zhuǎn)到相應(yīng)的設(shè)計(jì)界面
默認(rèn)添加兩個(gè)類 serviceProcessInstaller1和serviceInstaller1,第一個(gè)主要用來設(shè)置服務(wù)所屬賬戶,關(guān)系到服務(wù)的運(yùn)行,第二個(gè)是服務(wù)信息描述,如:服務(wù)名、是否自動(dòng)啟動(dòng)等
右鍵serviceProcessInstaller1屬性,將Account屬性選擇為L(zhǎng)ocalSystem
右鍵serviceInstaller1屬性,將StartType屬性設(shè)為Automatic(自動(dòng)啟動(dòng)),Description為“我的第一個(gè)windows服務(wù)”
全部保存后生成,找到生成的程序。
由于windows服務(wù)不能通過雙擊直接運(yùn)行,所以我們需要借助.net提供的InstallUtil.exe來安裝服務(wù)。
按回車開始安裝,成功后會(huì)提示 “提交”階段已成功完成,如果失敗則是“回滾”階段已成功完成
打開windows服務(wù)管理器就能看到我們安裝的服務(wù),默認(rèn)服務(wù)安裝成功后不會(huì)立刻啟動(dòng),需要我們手動(dòng)啟動(dòng)
如果不出意外,會(huì)顯示已啟動(dòng)
到D盤目錄下找到Service1.txt,打開會(huì)看到我們填入的信息,說明我們做的windows服務(wù)已經(jīng)成功了。
要卸載windows服務(wù)可以用InstallUtil.exe /u WindowsService1.exe來卸載或通過系統(tǒng)命令 sc delete 服務(wù)名來卸載。
- 圖解如何使用C#創(chuàng)建Windows服務(wù)
- C#創(chuàng)建Windows服務(wù)的圖文教程
- C#創(chuàng)建Windows服務(wù)與服務(wù)的安裝、卸載
- C#創(chuàng)建控制Windows服務(wù)
- C#用Topshelf創(chuàng)建Windows服務(wù)的步驟分享
- C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法
- 使用C#創(chuàng)建Windows服務(wù)的實(shí)例代碼
- C#通過創(chuàng)建Windows服務(wù)啟動(dòng)程序的方法詳解
- c#創(chuàng)建windows服務(wù)(Windows Services)詳細(xì)步驟
- Visual Studio C#創(chuàng)建windows服務(wù)程序
相關(guān)文章
C#中的Linq Intersect與Except方法使用實(shí)例
這篇文章主要介紹了C#中的Linq Intersect與Except方法使用實(shí)例,本文直接給出示例代碼,需要的朋友可以參考下2015-06-06VS.net VSS時(shí),編譯報(bào)錯(cuò):未能向文件“.csproj.FileListAbsolute.txt”寫入命令行 對(duì)路
在VSS上把項(xiàng)目的Bin和Obj目錄刪除,然后重新取出項(xiàng)目,編譯成功。2009-06-06