在c#中創建Windows服務
在這裡,我將在c# . net中解釋Windows服務。
1、Windows服務的介紹。
2、如何在c# . net中創建Windows服務。
介紹
Windows服務通常在操作系統OS啟動並在後台運行應用程序時啟動。Windows服務在自己的會話中執行應用程序。它可以自動啟動,也可以手動暫停、停止和重新啟動。
您可以通過以下方式找到服務:
1、進入控制面板選擇「服務」內部的「管理工具」。
2、打開命令行窗口(窗口+ R),輸入service.msc,按回車。
如何創建Windows服務
步驟1
打開Visual Studio,打開>文件新建和選擇項目。現在從對話框中選擇一個新項目,選擇「Window Service」並單擊OK按鈕。
步驟2
進入Visual c# ->「Windows Desktop」」->「Windows Service」,給你的項目一個合適的名字,然後點擊OK
一旦你點擊OK,下面的屏幕就會出現,這就是你的服務
步驟3
右鍵單擊空白區域並選擇「添加安裝程序」。
向服務添加安裝程序
在運行Windows服務之前,需要安裝安裝程序,安裝程序將它註冊到服務控制管理器。
添加安裝程序之後,ProjectInstaller將添加到項目和ProjectInstakker.cs文件將被打開。別忘了(按ctrl + shift + s鍵)保存項目。
解決方案瀏覽器如下圖:
步驟4
右鍵單擊空白區域,選擇「查看代碼」
步驟5
它有一個構造函數,它包含InitializeComponent方法。
InitializeComponent方法包含創建和初始化用戶界面對象的邏輯,這些對象拖在表單的表面上,並提供表單設計器的屬性網格。
非常重要:在調用InitializeComponent方法之前,不要嘗試調用任何方法。
步驟6
選擇InitializeComponent方法並按F12鍵進入定義。
步驟7
現在在安裝服務時添加以下一行:
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
您還可以添加描述並顯示服務名稱(可選)。
this.serviceInstaller1.Description = "My First Service demo";
this.serviceInstaller1.DisplayName = "MyFirstService.Demo";
步驟8
在這一步中,我們將實現一個計時器,並編寫代碼在給定的時間調用服務。我們將在文本文件中創建一個簡單的寫操作。
Service1.cs class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
namespace MyFirstService {
public partial class Service1: ServiceBase {
Timer timer = new Timer(); // name space(using System.Timers;)
public Service1() {
InitializeComponent();
}
protected override void OnStart(string[] args) {
WriteToFile("Service is started at " + DateTime.Now);
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 5000; //number in milisecinds
timer.Enabled = true;
}
protected override void OnStop() {
WriteToFile("Service is stopped at " + DateTime.Now);
}
private void OnElapsedTime(object source, ElapsedEventArgs e) {
WriteToFile("Service is recall at " + DateTime.Now);
}
public void WriteToFile(string Message) {
string path = AppDomain.CurrentDomain.BaseDirectory + "Logs";
if (!Directory.Exists(path)) {
Directory.CreateDirectory(path);
}
string filepath = AppDomain.CurrentDomain.BaseDirectory + "LogsServiceLog_" + DateTime.Now.Date.ToShortDateString().Replace("/", "_") + ".txt";
if (!File.Exists(filepath)) {
// Create a file to write to.
using(StreamWriter sw = File.CreateText(filepath)) {
sw.WriteLine(Message);
}
} else {
using(StreamWriter sw = File.AppendText(filepath)) {
sw.WriteLine(Message);
代碼說明——上面的代碼將每5秒調用一個服務,如果不存在,則創建一個文件夾並寫我們的消息。
步驟9:重新編譯應用程序
右鍵單擊您的項目或解決方案並選擇Rebuild。
第十步
以管理員運行的方式打開命令行:
步驟11
在命令提示符中啟動下面的命令並按Enter。
Step 12
現在進入的項目源文件目錄> bin > Debug ,然後複製Windows服務exe文件的完整路徑
步驟13
打開命令提示符並啟動下面的命令並按enter鍵。
語法
InstallUtil.exe+Your copied path + your service name + .exe
Our Path
InstallUtil.exe C:UsersFaisal-PathansourcereposMyFirstServiceMyFirstServicebinDebugMyFirstService.exe
步驟14
按以下步驟打開服務:
按下窗口鍵+ R,打開命令行窗口。
輸入services.msc
找到你的服務。
服務輸出:
將在您的bin文件夾中創建一個日誌文件夾。
如果您想卸載服務,請啟動下面的命令。
InstallUtil.exe -u +複製路徑+服務名+ .exe
我們的路徑InstallUtil.exe -u C:UsersFaisal-PathansourcereposMyFirstServiceMyFirstServicebinDebugMyFirstService.exe
總結
在本文中,我們學習了如何使用來自命令行的InstallUtil.exe創建Windows服務並安裝/卸載它。
我希望我已經清楚地解釋了每個步驟,讓所有開發人員能輕鬆理解。你可以給這篇文章留下反饋/評論/問題。
請關注公眾號:程序你好
TAG:程序員之路 |