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

创新互联建站专注于平江企业网站建设,成都响应式网站建设公司,成都商城网站开发。平江网站建设公司,为平江等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
Topshelf 是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
使用Topshelf可以非常方便的将一个C#控制台程序部署成为一个Windows Service,使用它可以很方便的构建跨平台服务寄主,而在调试时直接以控制台的形式运行即可,非常方便。
TopShelf 安装不需要依赖 .net framework 框架中的 InstallUtil.exe 工具。
- static void Main(string[] args)
 - {
 - HostFactory.Run(x =>
 - {
 - x.UseAssemblyInfoForServiceInfo();
 - x.Service
 (w => - {
 - w.ConstructUsing(name => new WriteTxtClass()); //使用 WriteTxtClass实体
 - w.WhenStarted(tc => tc.WriteTxtStart()); //开始服务触发 WriteTxtStart 函数
 - w.WhenStopped(tc => tc.WriteTxtStop()); //结束服务触发 WriteTxtStop 函数
 - });
 - x.SetServiceName("TopShelfService1"); //服务名
 - x.SetDisplayName("TopShelfService1");//服务显示名称
 - x.SetInstanceName("TopShelfService1"); //服务显示名称后面的描叙
 - x.SetDescription("TopShelfService1 is Test Services"); // 服务描叙
 - x.RunAsLocalSystem();
 - x.StartAutomatically();
 - });
 - }
 - public class WriteTxtClass
 - {
 - public void WriteTxtStart()
 - {
 - string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt";
 - if (!File.Exists(filePath))
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Create);
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//写入一行,写完后会自动换行
 - writer.Close();//释放内存
 - stream.Close();//释放内存
 - }
 - else
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加记录,不覆盖
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//写入一行,写完后会自动换行
 - writer.Close();//释放内存
 - stream.Close();//释放内存
 - }
 - }
 - public void WriteTxtStop()
 - {
 - string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt";
 - if (!File.Exists(filePath))
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Create);
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//写入一行,写完后会自动换行
 - writer.Close();//释放内存
 - stream.Close();//释放内存
 - }
 - else
 - {
 - FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加记录,不覆盖
 - StreamWriter writer = new StreamWriter(stream, Encoding.Default);
 - writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//写入一行,写完后会自动换行
 - writer.Close();//释放内存
 - stream.Close();//释放内存
 - }
 - }
 - }
 
安装和卸载windows服务 TopShelfService.exe install
#安装Windows服务 TopShelfService.exe uninstall #卸载Windows服务