基于C#實現(xiàn)Windows服務(wù)的方法詳解
前言
在實際應(yīng)用過程中,有時候我們希望開發(fā)的程序,不需要界面,直接開機(jī)就可以長時間運(yùn)行,這時候,我們可以考慮做成一個Windows服務(wù)。
這篇文章跟大家介紹一下,如何基于C#實現(xiàn)Windows服務(wù)的創(chuàng)建、安裝、啟動、停止和卸載。
Windows服務(wù)介紹
Microsoft Windows 服務(wù)能夠創(chuàng)建在它們自己的 Windows 會話中可長時間運(yùn)行的可執(zhí)行應(yīng)用程序。這些服務(wù)可以在計算機(jī)啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這使服務(wù)非常適合在服務(wù)器上使用,或任何時候,為了不影響在同一臺計算機(jī)上工作的其他用戶,需要長時間運(yùn)行功能時使用。還可以在不同于登錄用戶的特定用戶賬戶或默認(rèn)計算機(jī)賬戶的安全上下文中運(yùn)行服務(wù)。
創(chuàng)建Windows服務(wù)
1、創(chuàng)建一個新項目,項目類型選擇Windows服務(wù),如下圖所示:
2、項目名稱修改為thinger.WindowsServiceDemo,創(chuàng)建完成界面如下所示:
3、為了方便區(qū)分,將類名Service1改成MyService。
4、在設(shè)計界面,右擊鼠標(biāo),會出現(xiàn)如下彈窗,選擇添加安裝程序,并點(diǎn)擊添加安裝程序。
5、點(diǎn)擊添加安裝程序之后,會自動添加一個ProjectInstaller界面,里面有兩個組件,分別是serviceProcessInstaller和serviceInstaller。
6、先選擇serviceInstaller進(jìn)行屬性設(shè)置,主要可以設(shè)置以下屬性:
- ServiceName:服務(wù)名稱,這個后續(xù)會使用到。
- Description:描述,可以自己添加一下說明
- StartType:啟動類型,可以設(shè)置為手動或自動
7、接著選擇ProjectInstaller進(jìn)行設(shè)置,主要設(shè)置Account,指示用來運(yùn)行此服務(wù)的賬戶類型,可以設(shè)置為LocalSystem
8、設(shè)置完成之后,切換到MyService這個類,點(diǎn)擊切換到代碼視圖,我們可以看到后臺有一些自動生成的代碼:
public partial class MyService : ServiceBase { public MyService() { InitializeComponent(); } protected override void OnStart(string[] args) { } protected override void OnStop() { } }
從名稱可以看出,這里重寫了OnStart和OnStop接口,可以在這里寫一些啟動服務(wù)和停止服務(wù)的邏輯。
9、寫了一個簡單的邏輯,就是每次服務(wù)啟動或停止都會向指定的文件中寫入一串信息。
protected override void OnStart(string[] args) { WriteInfo("服務(wù)啟動"); } protected override void OnStop() { WriteInfo("服務(wù)停止"); } private string filePath = @"D:\ServiceLog.txt"; private void WriteInfo(string info) { using (FileStream stream = new FileStream(filePath, FileMode.Append)) { using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine($"{DateTime.Now},{info}"); } } }
10、點(diǎn)擊項目,右擊生成。
11、這樣,一個簡單的Windows服務(wù)就創(chuàng)建完成了。
安裝卸載Windows服務(wù)
我們直接運(yùn)行剛剛創(chuàng)建的服務(wù),發(fā)現(xiàn)是無法運(yùn)行的,提示使用installutil.exe來運(yùn)行。
如果安裝了VS,這個exe應(yīng)用程序在C盤里可以找到的,具體路徑為:C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
接下來,我們使用這個exe來進(jìn)行安裝和卸載Windows服務(wù)。
1、首先,使用管理員權(quán)限打開CMD,然后進(jìn)入這個路徑下,便于直接操作InstallUtil。
2、安裝服務(wù)命令:installutil exe絕對路徑 ;卸載服務(wù)命令:installutil exe絕對路徑 -u ;查看安裝執(zhí)行結(jié)果:
打開服務(wù),可以看到TestService這個名稱的服務(wù)已經(jīng)安裝完成,
3、安裝完成后,雙擊打開,可以啟動服務(wù):
4、也可以手動停止服務(wù):
5、觀察D盤文件,是否存在信息:
6、卸載服務(wù)結(jié)果:
到此這篇關(guān)于基于C#實現(xiàn)Windows服務(wù)的方法詳解的文章就介紹到這了,更多相關(guān)C# Windows服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 刪除數(shù)組內(nèi)的某個值、一組值方法詳解
在本篇文章里小編給大家整理的是關(guān)于C# 如何刪除數(shù)組內(nèi)的某個值、一組值的相關(guān)知識點(diǎn),需要的朋友們學(xué)習(xí)下。2020-03-03C# wpf使用ffmpeg命令行實現(xiàn)錄屏的示例代碼
本文主要介紹了C# wpf使用ffmpeg命令行實現(xiàn)錄屏的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08