代码改变世界

C#常规开发Windows服务

2017-09-20 15:44  huoit  阅读(338)  评论(0)    收藏  举报

 .Net平台下开发Windows服务的支持库很多,除了通过标准的Windows服务项目,还有一些优秀的开源架构比如:TopSelf;本文以常规项目为例

 一、开发

1、新建【Windows服务】 项目:Practice.WinSvc.Normal;可以看到自动新建了一个服务类;点击打开设计界面;设计界面右键可以查看代码界面;

 

2、新建业务处理类OrderJob.cs

using System;
using System.Threading;

namespace Practice.WinSvc.Normal
{
    public sealed class OrderJob
    {
        private Boolean _IsStop = false;
        private Thread _Thread;
        public void Start()
        {
            _IsStop = false;
            _Thread = new Thread(new ThreadStart(StartJob));
        }

        private void StartJob()
        {
            while (!_IsStop)
            {
                //Do Some thing

                Thread.Sleep(500);
            }
        }

        public void Stop()
        {
            _IsStop = true;

        }
    }
}

 

3、打开我们的服务PracticeWinSvcNormalService查看代码,修改:

namespace Practice.WinSvc.Normal
{
    public partial class PracticeWinSvcNormalService : ServiceBase
    {
        public PracticeWinSvcNormalService()
        {
            InitializeComponent();
        }
        public OrderJob _orderjob = new OrderJob();
        protected override void OnStart(string[] args)
        {
            _orderjob.Start();
        }

        protected override void OnStop()
        {
            _orderjob.Stop();
        }
    }
}

 

4、添加安装程序,在服务设计界面上右键——添加安装程序,会自动添加一个ProjectInstaller里面包含了两个控件设置一些服务的属性 ;至此一个完整的服务开发完成

StartType设置手动、自动等等;ServiceName:设置服务的名称;

 

namespace Practice.WinSvc.Normal
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
        public ProjectInstaller()
        {
            InitializeComponent();
        }
    }
}

 

 

 

二、安装

1、方法:命令行

开发完成后编译Debug版本;安装要使用一个.Net Framework自带的工具InstallUtil.exe;使用.Net4.0的工具

输入命令:

InstallUtil.exe D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe

 

卸载

InstallUtil.exe \u D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe

 也可以重新定义服务的名字

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "MyServer.exe" -service /serviceName:"myServer-v1"

 

调试的时候附加到进程就可以了;

 

2、添加VS外部工具

 这个看个人习惯,添加进去方便直接在vs就执行安装;免去命令行的麻烦;直接编译过项目,点击工具——我们设置的名称就可以安装;