本文转载:

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. Raspberry Pi I2C驱动 (Python)
  2. 【转】统计模型-n元文法
  3. 深入了解view以及自定义控件
  4. javascript面向对象方式,调用属性和方法
  5. java的System.getProperty()方法可以获取的值
  6. 高性能Web服务端 PHP vs Node.js vs Nginx-Lua 的对比分析
  7. 金山词霸每日一句开放平台 .NET demo
  8. js函数中的几个特点
  9. [POJ 1365] Prime Land
  10. jquery ajax 事件执行顺序
  11. ant design 树形组件怎么使用
  12. Microsoft Excel Sheet/表格 制作折线图
  13. 使用GraceNote Web API发展Mac发现音乐信息的应用
  14. Opencv与Qt (一)之运行测试读取图片
  15. OpenStack的八年之痒
  16. electron 使用 node-ffi 调用 C++ 动态链接库(DLL)
  17. python 读写、创建 文件的方法(必看)
  18. 测试工作中经常用到的一丢Linux命令
  19. Tarjan 算法求强联通分量
  20. ubuntu14.04 Samba服务无法访问 可能没有权限 指定的网络名不再可用的问题

热门文章

  1. CSS3圆角(border-radius)
  2. ecshop安装程序源码阅读-安装脚本(1)
  3. 禁用微信 webview 调整字体大小
  4. 自己挖坑自己跳 之JsonMappingException: (was java.lang.NullPointerException) (through reference chain:)
  5. python 文件及文件夹操作
  6. 完美解决 Phonegap jQeuryMobile 闪屏 问题
  7. bower的权限问题
  8. 2015 年 Ruby 大盘点
  9. Water Tree
  10. Android JSON数据解析(数据传输)