聊聊.Net如何实现Windows服务

开发 后端
Topshelf 是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。

 [[411065]]

本文转载自微信公众号「UP技术控」,作者conan5566。转载本文请联系UP技术控公众号。

Topshelf 是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。

使用Topshelf可以非常方便的将一个C#控制台程序部署成为一个Windows Service,使用它可以很方便的构建跨平台服务寄主,而在调试时直接以控制台的形式运行即可,非常方便。

TopShelf 安装不需要依赖 .net framework 框架中的 InstallUtil.exe 工具。

  1. static void Main(string[] args) 
  2.         { 
  3.  
  4.  
  5.             HostFactory.Run(x => 
  6.             { 
  7.                 x.UseAssemblyInfoForServiceInfo(); 
  8.                 x.Service<WriteTxtClass>(w => 
  9.                 { 
  10.                     w.ConstructUsing(name => new WriteTxtClass());  //使用 WriteTxtClass实体 
  11.                     w.WhenStarted(tc => tc.WriteTxtStart());   //开始服务触发 WriteTxtStart 函数 
  12.                     w.WhenStopped(tc => tc.WriteTxtStop());    //结束服务触发 WriteTxtStop 函数 
  13.                 }); 
  14.  
  15.  
  16.                 x.SetServiceName("TopShelfService1"); //服务名 
  17.                 x.SetDisplayName("TopShelfService1");//服务显示名称 
  18.                 x.SetInstanceName("TopShelfService1"); //服务显示名称后面的描叙 
  19.                 x.SetDescription("TopShelfService1 is Test Services"); // 服务描叙 
  20.                 x.RunAsLocalSystem(); 
  21.                 x.StartAutomatically(); 
  22.  
  23.  
  24.             }); 
  25.         } 
  26.  
  27.     public class WriteTxtClass 
  28.     { 
  29.         public void WriteTxtStart() 
  30.         { 
  31.             string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt"
  32.             if (!File.Exists(filePath)) 
  33.             { 
  34.                 FileStream stream = new FileStream(filePath, FileMode.Create); 
  35.                 StreamWriter writer = new StreamWriter(stream, Encoding.Default); 
  36.                 writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//写入一行,写完后会自动换行 
  37.                 writer.Close();//释放内存 
  38.                 stream.Close();//释放内存 
  39.             } 
  40.             else 
  41.             { 
  42.                 FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加记录,不覆盖 
  43.                 StreamWriter writer = new StreamWriter(stream, Encoding.Default); 
  44.                 writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//写入一行,写完后会自动换行 
  45.                 writer.Close();//释放内存 
  46.                 stream.Close();//释放内存 
  47.             } 
  48.         } 
  49.         public void WriteTxtStop() 
  50.         { 
  51.             string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt"
  52.             if (!File.Exists(filePath)) 
  53.             { 
  54.                 FileStream stream = new FileStream(filePath, FileMode.Create); 
  55.                 StreamWriter writer = new StreamWriter(stream, Encoding.Default); 
  56.                 writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//写入一行,写完后会自动换行 
  57.                 writer.Close();//释放内存 
  58.                 stream.Close();//释放内存 
  59.             } 
  60.             else 
  61.             { 
  62.                 FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加记录,不覆盖 
  63.                 StreamWriter writer = new StreamWriter(stream, Encoding.Default); 
  64.                 writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//写入一行,写完后会自动换行 
  65.                 writer.Close();//释放内存 
  66.                 stream.Close();//释放内存 
  67.             } 
  68.         } 
  69.     } 

安装和卸载windows服务 TopShelfService.exe install

#安装Windows服务 TopShelfService.exe uninstall #卸载Windows服务

 

责任编辑:武晓燕 来源: UP技术控
相关推荐

2021-02-07 09:05:56

微服务结构云原生

2021-06-08 09:28:12

.Net通知服务

2021-05-19 08:04:11

ASP.Net服务性原则

2022-04-11 08:17:07

JVMJava进程

2022-06-17 07:49:14

缓存LRU

2010-01-15 16:03:48

VB.NET重载Win

2024-04-15 10:32:14

2021-07-11 12:12:49

.NETJWTjson

2023-01-03 07:40:27

自定义滑块组件

2024-01-10 07:23:52

高可用策略实践

2011-08-08 10:35:40

服务器NTFSTDE

2011-09-01 11:08:41

安全登陆Windows服务器网络安全

2017-06-02 08:32:01

调度服务数据

2010-05-21 13:23:23

SVN作为window

2023-12-15 09:57:13

微服务链路服务

2023-08-07 08:32:05

RocketMQ名字服务

2017-03-27 15:37:56

Windows 8WindowsWindows Sea

2023-07-27 07:35:55

HTTP持久化服务器

2021-07-20 08:03:43

微服务应用程序

2009-08-25 15:38:12

C# Windows服
点赞
收藏

51CTO技术栈公众号