使用Topshelf创建Windows 服务

简介: 本文转载: http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html http://www.cnblogs.com/jys509/p/4628926.

本文转载:

http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html

http://www.cnblogs.com/jys509/p/4628926.html

官网github

https://github.com/Topshelf/Topshelf/downloads

 b.利用组件Topshelf

本方式特点:代码简单,开源组件,Windows服务可运行多个实例

 Topshelf是一个开源的跨平台的服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务. 官方网站:http://topshelf-project.com

 第1步:引用程序集TopShelf.dll和log4net.dll

 第2步:创建一个服务类MyClass,里面包含两个方法Start和Stop,还包含一个定时器Timer,每隔5秒往文本文件中写入字符

 

复制代码
    public class MyClass
    {
        readonly Timer _timer;

        private static readonly string FileName = Directory.GetCurrentDirectory ( ) + @"\" + "test.txt";

        public MyClass ( )
        {
            _timer = new Timer ( 5000 )
            {
                AutoReset = true ,
                Enabled = true
            };

            _timer.Elapsed += delegate ( object sender , ElapsedEventArgs e )
            {
                this.witre ( string.Format ( "Run DateTime {0}" , DateTime.Now ) );
            };
        }

        void witre ( string context )
        {
            StreamWriter sw = File.AppendText ( FileName );
            sw.WriteLine ( context );
            sw.Flush ( );
            sw.Close ( );
        }

        public void Start ( )
        {
            this.witre ( string.Format ( "Start DateTime {0}" , DateTime.Now ) );
        }

        public void Stop ( )
        {
            this.witre ( string.Format ( "Stop DateTime {0}" , DateTime.Now ) + Environment.NewLine );
        }

    }
复制代码

 

第3步:使用Topshelf宿主我们的服务,主要是Topshelf如何设置我们的服务的配置和启动和停止的时候的方法调用

 

复制代码
    class Program
    {
        static void Main ( string [ ] args )
        {
            HostFactory.Run ( x =>
            {
                x.Service<MyClass> ( ( s ) =>
                {
                    s.SetServiceName ( "ser" );
                    s.ConstructUsing ( name => new MyClass ( ) );
                    s.WhenStarted ( ( t ) => t.Start ( ) );
                    s.WhenStopped ( ( t ) => t.Stop ( ) );
                } );

                x.RunAsLocalSystem ( );

                //服务的描述
                x.SetDescription ( "Topshelf_Description" );
                //服务的显示名称
                x.SetDisplayName ( "Topshelf_DisplayName" );
                //服务名称
                x.SetServiceName ( "Topshelf_ServiceName" );

            } );
        }
    }
复制代码

 

第4步: cmd命令

 ConsoleApp_Topshelf.exe  install    (安装Windows服务)

 ConsoleApp_Topshelf.exe  uninstall  (卸载Windows服务)

 代码下载:http://files.cnblogs.com/aierong/ConsoleApp_Topshelf.rar

 

目录
相关文章
|
1月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
1月前
|
存储 安全 数据安全/隐私保护
Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件
Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件
249 0
|
2月前
|
Java Unix 应用服务中间件
使用java service wrapper把windows flume做成服务
使用java service wrapper把windows flume做成服务
|
2月前
|
Windows
修改Windows服务的配置
修改Windows服务的配置
|
21天前
|
Shell Windows
Windows服务器 开机自启动服务
Windows服务器 开机自启动服务
13 0
|
1月前
|
Windows
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
windows server 2019 安装NET Framework 3.5失败,提示:“安装一个或多个角色、角色服务或功能失败” 解决方案
|
2月前
|
安全 数据安全/隐私保护 Windows
Windows系统搭建VisualSVN实现公网访问本地服务
Windows系统搭建VisualSVN实现公网访问本地服务
48 0
|
3月前
|
C# 数据安全/隐私保护 开发者
Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?
Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?
|
3月前
|
应用服务中间件 nginx Windows
Windows 设置开机自启 将可执行文件加入到系统服务中
Windows 设置开机自启 将可执行文件加入到系统服务中
38 0
|
3月前
|
TensorFlow 网络安全 算法框架/工具
tensorflow的模型使用flask制作windows系统服务
tensorflow的模型使用flask制作windows系统服务