网站首页 文章专栏 C#创建和调试windows service
C#创建和调试windows service
编辑时间:2017-07-25 15:34 作者:Absolutely 浏览:908 评论:4


    

    前言:很久没写博客了,不知道是忙还是懒。两个月来这个博客还有Win10前端项目几乎放弃了。尽管自己尽力调整,但工作与生活始终无法平衡。不过做事得有始有终,等忙完手上项目,我决定重启Win10模板,完善并开源。


    最近使用到了windows服务,所以在此将C#创建和调试windows服务的过程做一下记录。  


    工具:Visual Studio 2013

一、创建Windows Service项目。

    步骤:文件>新建>项目>Windows>Windows服务>确定


    项目结构如下图:


    创建项目

    

    这里我重命名为TestService。


二、添加服务安装程序。

    添加安装程序


    添加后如图所示,创建了ProjectInstaller.cs和两个serviceProcessInstaller1和serviceInstaller1组件。


    服务安装程序


    修改安装服务名:


    修改服务安装名    

 


    说明:

    Description:服务描述,直接显示到Windows服务列表中的描述;

    DisplayName:服务显示名称,直接显示到Windows服务列表中的名称;

    ServiceName:服务进程名称,安装与卸载服务时的唯一标识。


    修改服务安装权限:

    

    修改服务安装权限


三、写服务代码。

    public partial class TestService : ServiceBase
    {
        private System.Timers.Timer timer;  //计时器,延迟执行方便调试
        public TestService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            timer = new System.Timers.Timer(20000);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timerDelay_Elapsed);
            //启动计时器
            timer.Start();
        }
        protected override void OnStop()
        {
            string fullPath = "C:\\test.txt";
            using (StreamWriter sw = new StreamWriter(fullPath, true, Encoding.Default))
            {
                sw.WriteLine("服务停止");
            }
        }
        void timerDelay_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timer.Enabled = false;
            timer.Close();
            //写入文件
            string fullPath = "C:\\test.txt";
            using (StreamWriter sw = new StreamWriter(fullPath, true, Encoding.Default))
            {
                sw.WriteLine("服务启动");
            }
        }
    }
     以上代码作用是启动服务的时候 隔20秒 写入一个启动日志,停止服务的时候写入一个停止日志。



四、创建安装脚本。

    一个安装服务的脚本:Install.bat。一个卸载服务的脚本:Uninstall.bat


    Install.bat代码:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0\WindowsServiceTest.exe
Net Start TestService
sc config TestService start= auto
pause
     Uninstall.bat代码:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0\WindowsServiceTest.exe
pause
    说明:


    Net Start [ServiceName] 表示启动服务

    sc config [ServiceName] start = auto 表示服务自动运行

    %~dp0\ 表示当前目录


    写好后把这两个文件放在项目的bin目录下。运行(注意Win10需要以管理员方式运行)


    Install.bat运行结果:


    运行结果


    查看系统服务:

    

    系统服务


    查看服务运行结果:


    运行结果


    OK! Windows Service创建成功。调试请看后续。


    出自:不落阁

    地址:http:www.lyblogs.cn

    转载请注明出处!


来说两句吧
最新评论
  • BinGe
    BinGe 2018-01-05 10:25:00

    不错哦 我也有个demo关于windows 服务的

    http://www.bing86.com/post-150925004.html

  • 没有的别想了
    没有的别想了 2017-07-29 23:14:52
    持续关注楼主ing,希望楼主不要放弃啊。
  • 謓dêシ累了
    謓dêシ累了 2017-07-31 16:04:15
    11
  • 謓dêシ累了
    謓dêシ累了 2017-07-31 16:05:11
    [嘻嘻]1