一文教你如何使用C#開發(fā)一個Windows后臺服務(wù)
前言
在實際應(yīng)用過程中,有時候我們希望開發(fā)的程序不需要界面,直接開機就可以長時間運行。例如服務(wù)器監(jiān)控、數(shù)據(jù)采集等場景,這時候我們可以考慮將程序做成一個Windows服務(wù)。
本文將詳細(xì)介紹如何基于C#實現(xiàn)Windows服務(wù)的創(chuàng)建、安裝、啟動、停止和卸載,并展示具體的代碼示例和操作步驟。
項目介紹
Microsoft Windows 服務(wù)能夠創(chuàng)建在它們自己的Windows會話中可長時間運行的可執(zhí)行應(yīng)用程序。這些服務(wù)可以在計算機啟動時自動啟動,可以暫停和重新啟動且不顯示任何用戶界面。
這使得服務(wù)非常適合在服務(wù)器上使用,或任何時候為了不影響在同一臺計算機上工作的其他用戶而需要長時間運行功能時使用。還可以在不同于登錄用戶的特定用戶賬戶或默認(rèn)計算機賬戶的安全上下文中運行服務(wù)。
項目功能
1、創(chuàng)建Windows服務(wù):通過Visual Studio創(chuàng)建一個Windows服務(wù)項目。
2、安裝與卸載服務(wù):使用installutil.exe工具進(jìn)行服務(wù)的安裝和卸載。
3、啟動與停止服務(wù):通過命令行或Windows服務(wù)管理器啟動和停止服務(wù)。
4、日志記錄:每次服務(wù)啟動或停止時,向指定文件寫入信息。
項目特點
1、無需用戶界面:適合后臺長期運行的應(yīng)用程序。
2、自動啟動:可以在系統(tǒng)啟動時自動運行服務(wù)。
3、安全上下文:支持在不同的用戶賬戶下運行服務(wù)。
4、日志功能:便于調(diào)試和監(jiān)控服務(wù)運行狀態(tài)。
項目技術(shù)
- C#:用于編寫Windows服務(wù)的核心邏輯。
- Visual Studio:用于創(chuàng)建和編譯Windows服務(wù)項目。
- InstallUtil.exe:用于安裝和卸載Windows服務(wù)的工具。
- FileStream 和 StreamWriter:用于文件操作,記錄服務(wù)啟動和停止的日志信息。
創(chuàng)建Windows服務(wù)
1、創(chuàng)建新項目
首先,在Visual Studio中創(chuàng)建一個新的Windows服務(wù)項目,命名為thinger.WindowsServiceDemo。

2、修改類名
將默認(rèn)生成的服務(wù)類Service1修改為更具描述性的名稱MyService。

3、添加安裝程序
在設(shè)計視圖中右擊鼠標(biāo),選擇“添加安裝程序”,這會自動生成一個包含serviceProcessInstaller和serviceInstaller的ProjectInstaller組件。

4、設(shè)置屬性
設(shè)置serviceInstaller的屬性:
ServiceName:服務(wù)名稱。Description:服務(wù)描述。StartType:啟動類型(手動或自動)。

設(shè)置serviceProcessInstaller的Account屬性為LocalSystem。
5、編寫服務(wù)邏輯
在MyService類中重寫OnStart和OnStop方法,實現(xiàn)服務(wù)啟動和停止時的日志記錄功能。
public partial class MyService : ServiceBase
{
public MyService()
{
InitializeComponent();
}
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}");
}
}
}
}
6、生成項目
點擊項目,右擊并選擇"生成"來編譯項目。

安裝與卸載Windows服務(wù)
1、使用InstallUtil.exe
如果安裝了Visual Studio,installutil.exe位于以下路徑:C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
使用管理員權(quán)限打開CMD,進(jìn)入上述路徑后執(zhí)行以下命令進(jìn)行服務(wù)的安裝和卸載:
安裝服務(wù):
installutil "服務(wù)exe絕對路徑"
卸載服務(wù):
installutil "服務(wù)exe絕對路徑" -u
2、啟動與停止服務(wù)
安裝完成后,可以通過Windows服務(wù)管理器啟動和停止服務(wù)。

3、檢查日志文件
查看D盤上的日志文件,確認(rèn)服務(wù)啟動和停止的信息是否正確記錄。

總結(jié)
本文詳細(xì)介紹了如何基于C#實現(xiàn)Windows服務(wù)的創(chuàng)建、安裝、啟動、停止和卸載。
通過使用Visual Studio和installutil.exe工具,開發(fā)者可以輕松地將應(yīng)用程序轉(zhuǎn)換為Windows服務(wù),從而滿足后臺長期運行的需求。不管是服務(wù)器監(jiān)控還是數(shù)據(jù)采集,都能提供強大的支持。
到此這篇關(guān)于一文教你如何使用C#開發(fā)一個Windows后臺服務(wù)的文章就介紹到這了,更多相關(guān)C#開發(fā)Windows后臺服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入分析C#中WinForm控件之Dock順序調(diào)整的詳解
本篇文章是對C#中WinForm控件之Dock順序調(diào)整進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
c#讀取圖像保存到數(shù)據(jù)庫中(數(shù)據(jù)庫保存圖片)
這篇文章主要介紹了使用c#讀取圖像保存到數(shù)據(jù)庫中的方法,大家參考使用吧2014-01-01
C#實現(xiàn)快速將數(shù)據(jù)寫入Excel單元格
這篇文章主要為大家詳細(xì)介紹了如何使用C#實現(xiàn)快速將數(shù)據(jù)寫入Excel單元格,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
Unity打開淘寶app并跳轉(zhuǎn)到商品頁面功能的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于如何利用Unity打開淘寶app并跳轉(zhuǎn)到商品頁面功能的相關(guān)資料,這個功能目前在網(wǎng)上找不到相關(guān)的解決方法,所以自己寫了出來,需要的朋友可以參考下2021-07-07
Jquery+Ajax+Json+存儲過程實現(xiàn)高效分頁
這篇文章主要介紹Jquery+Ajax+Json+存儲過程實現(xiàn)分頁,需要的朋友可以參考下2015-08-08

