C#編寫Windows服務(wù)實(shí)例代碼
使用Microsoft Visual Studio2012可以很方便的創(chuàng)建一個(gè)Windows服務(wù),本例實(shí)現(xiàn)一個(gè)向D盤的txt文件里,寫入系統(tǒng)時(shí)間的Windows服務(wù)。
新建一個(gè)Windows Services工程:
工程創(chuàng)建好之后,默認(rèn)會(huì)有一個(gè)Services1.cs文件,刪掉此文件,重新添加一個(gè)新Item

右擊新添加的這個(gè)文件,選擇View code,可以看到,有兩個(gè)函數(shù) OnStart和OnStop,OnStart函數(shù)在啟動(dòng)服務(wù)時(shí)執(zhí)行,OnStop函數(shù)在停止服務(wù)時(shí)執(zhí)行。
這兩個(gè)函數(shù)的代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace MyFirstWindowsService
{
partial class MyWindowsService : ServiceBase
{
public MyWindowsService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.BaseStream.Seek(0, SeekOrigin.End);
streamWriter.WriteLine("My service started" + DateTime.Now.ToString() + "\n");
streamWriter.Flush();
streamWriter.Close();
fileStream.Close();
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.BaseStream.Seek(0, SeekOrigin.End);
streamWriter.WriteLine("My service stopped " + DateTime.Now.ToString() + "\n");
streamWriter.Flush();
streamWriter.Close();
fileStream.Close();
}
}
}
之后需要新建一個(gè)安裝組件MyWindowsServiceProjectInstaller(右擊MyWindowsService.cs這個(gè)文件選擇view desiner,然后選擇Add Installer),需要將MyFirstWindowsServiceProcessInstaller的account屬性設(shè)置為localservice.


編寫批處理文件:
安裝服務(wù)批處理:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe
Net Start ServiceTest
sc config ServiceTest start= auto
卸載服務(wù)批處理:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe
服務(wù)安裝好之后:

服務(wù)啟動(dòng)之后可以在D盤看到一個(gè)txt的文件,里面記錄了服務(wù)的啟動(dòng)時(shí)間.
- C#啟動(dòng)windows服務(wù)方法的相關(guān)問題分析
- C#啟動(dòng)和停止windows服務(wù)的實(shí)例代碼
- c#創(chuàng)建windows服務(wù)(Windows Services)詳細(xì)步驟
- c#創(chuàng)建windows服務(wù)入門教程實(shí)例
- C#使用windows服務(wù)開啟應(yīng)用程序的方法
- C#編寫Windows服務(wù)程序詳細(xì)步驟詳解(圖文)
- C#創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)方法
- C#創(chuàng)建Windows服務(wù)與服務(wù)的安裝、卸載
- C#創(chuàng)建Windows Service(Windows 服務(wù))的方法步驟
相關(guān)文章
解決WPF附加屬性的Set函數(shù)不調(diào)用的問題
這篇文章介紹了解決WPF附加屬性的Set函數(shù)不調(diào)用的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C#獲取時(shí)間戳的方法及時(shí)間戳轉(zhuǎn)換問題
本文主要介紹了C#獲取時(shí)間戳的方法及時(shí)間戳轉(zhuǎn)換問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
C# JavaScriptSerializer序列化時(shí)的時(shí)間處理詳解
這篇文章主要為大家詳細(xì)介紹了C# JavaScriptSerializer序列化時(shí)的時(shí)間處理詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
在C#中處理時(shí)間戳和時(shí)區(qū)的解決方法
處理時(shí)間戳和不同的時(shí)區(qū)可能是軟件開發(fā)中的一個(gè)棘手問題,尤其是當(dāng)系統(tǒng)不確定給定的日期時(shí)間是UTC還是本地時(shí)間時(shí),通常會(huì)遇到與時(shí)間轉(zhuǎn)換相關(guān)的問題,在這篇文章中,我將分享我們?nèi)绾卧贑#中處理時(shí)間戳和時(shí)區(qū),需要的朋友可以參考下2024-06-06
Unity編輯器資源導(dǎo)入處理函數(shù)OnPreprocessAudio用法示例
這篇文章主要為大家介紹了Unity編輯器資源導(dǎo)入處理函數(shù)OnPreprocessAudio用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
C#中DataTable實(shí)現(xiàn)行列轉(zhuǎn)換的方法
這篇文章主要介紹了C#中DataTable實(shí)現(xiàn)行列轉(zhuǎn)換的方法,實(shí)例分析了C#操作DataTable的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

