Topshelf是一個.NET Standard庫,它消除了在.NET Framework和.NET Core中創建Windows服務的那些麻煩,
安裝
Install-Package Topshelf

代碼
using System;
using System.Collections.Generic;
using System.Text;
using Topshelf;
namespace ConsoleApp2222
{
public class LoggingService : ServiceControl
{
private void Log(string logMessage)
{
Console.WriteLine(logMessage);
}
public bool Start(HostControl hostControl)
{
Log("Starting");
return true;
}
public bool Stop(HostControl hostControl)
{
Log("Stopping");
return true;
}
}
}
在Program.cs檔案的Main方法中
1、服務的名稱
2、服務是否自動啟動
3、服務崩潰之后的重啟時間
using System;
using Topshelf;
namespace ConsoleApp2222
{
internal class Program
{
private static void Main(string[] args)
{
HostFactory.Run(x =>
{
x.Service<LoggingService>();
x.EnableServiceRecovery(r => r.RestartService(TimeSpan.FromSeconds(10)));
x.SetServiceName("TestService");
x.StartAutomatically();
}
);
}
}
}
部署服務

ConsoleApp2222.exe install
ConsoleApp2222.exe start
除錯服務
如果我們的服務代碼已經在Visual Studio中打開了,我們就可以直接啟動除錯,Topshelf會模擬在控制臺中啟動服務,我們應該能在控制臺中看到以下的訊息,

這確實符合了我們的需求,它啟動了我們的服務,并像真正的Windows服務一樣在后臺運行,我們可以像往常一樣設定斷點,基本上它遵循的流程和正常安裝的服務一樣,
我們可以通過ctrl+c, 來關閉我們的應用,但是在運行服務執行Stop方法之前,它是不能被關閉的,這使我們可以除錯服務的關閉流程,與除錯指令和配置標志相比,這要容易的多,
這里需要注意一個問題,如果你收到的以下內容的訊息:

這意味著你嘗試除錯的服務實際上已經作為Windows服務被安裝在系統中了,你需要停止(不需要卸載)這個正在運行的服務,才可以正常除錯,
參考檔案
https://topshelf.readthedocs.io/en/latest/configuration/config_api.html
https://github.com/Topshelf/Topshelf
http://topshelf-project.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/202394.html
標籤:.NET Core
上一篇:C# 常用方法擴展及封裝記錄
下一篇:C# 常用方法擴展及封裝記錄
