聊聊.Net如何实现Windows服务

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

创新互联建站专注于平江企业网站建设,成都响应式网站建设公司,成都商城网站开发。平江网站建设公司,为平江等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务

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

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

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

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

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

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

当前名称:聊聊.Net如何实现Windows服务
本文路径:http://www.gawzjz.com/qtweb2/news47/3847.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联