前言
在寫后台代碼的過程中,經常會遇到要寫一些單獨的服務。以前呢,直接用的是 .NET 下的 “Windows 服務” 控件開發的。
這個傳統的控件開發起來很不方面,使用也不友好。發現有用 Topshelf 的,這個第三方的框架,集成的很好,用起來也方便。
這里就說下我的使用過程。
使用
1、添加引用
在需要使用Topshelf的項目右鍵“引用”=》“管理NuGet程序包”
搜索“Topshelf”就可以,安裝最新版。

2、代碼中使用
這里直接上代碼。
class Program { static void Main(string[] args) { Host host = HostFactory.New(x => {
// 基本的配置 x.RunAsLocalSystem(); x.SetServiceName("Service"); x.SetDisplayName("Service"); x.SetDescription("服務"); x.StartAutomatically(); x.EnableShutdown();
// 注冊服務 x.Service<Service>(hostSettings => new Service()); // 設置服務失敗后的操作,分別對應第一次、第二次、后續 x.EnableServiceRecovery(t => { t.RestartService(0); t.RestartService(0); t.RestartService(0); t.OnCrashOnly(); }); }); host.Run(); } }
這里要繼承 Topshelf的“ServiceControl”,來開始服務和結束服務。
public class Service : ServiceControl {public bool Start(HostControl hostControl) { // 開始具體的業務邏輯 return true; } public bool Stop(HostControl hostControl) { // 結束 return true; } }
3、部署服務
部署、開始、卸載服務只需要一句命令行就可以:
安裝:Service.exe install
啟動:Service.exe start
卸載:Service.exe uninstall
這些命令是在當前文件夾下打開 CMD 執行的命令。如果不是當前文件夾,需要帶上絕對路徑。
