首页 > Windows开发 > 详细

c#创建、安装、卸载、调试windows服务的简单事例

时间:2015-10-11 19:23:15      阅读:308      评论:0      收藏:0      [点我收藏+]
 

最近工作中用到了windows服务,对其有深刻理解和丰富经验谈不上,本篇文章只是简单陈诉了我工作中用c#创建、安装、卸载、调试windows服务的步骤。

一、创建windows服务

1、用VS创建windows服务,结果如下:

技术分享

2、删除默认生成的Service1.cs文件,然后创建自己的服务文件(如:MyService),并修改Program.cs文件的代码,如下:

技术分享

此时,解决方案的目录结构如下:

技术分享

3、双击MyService.cs服务文件,在左侧设计模式中,右键,点击“添加安装程序”,自动会生成Projectinstaller.cs文件以及两个安装组件,如下:

技术分享

 

4、右键”ServiceProcessInstaller1“,选择属性,设置Account 帐号方式,建议为LocalService,如下:

技术分享

5、右键”ServiceInstaller1“,选择属性,设置属性

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

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

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

如下:

技术分享

6、创建安装服务批处理文件Install.bat,可以创建记事本,然后修改后缀为bat,记事本内容如下:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start MyService
sc config MyService start= auto
pause

记事本另存为时设置编码为ANSI,如下图:

技术分享

7、同理创建创建卸载服务批处理文件Uninstall.bat,内容如下:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause

此时解决方案的目录结构如下:

技术分享

 

二、写服务代码

右键”MyService.cs“,选择查看代码,如下:

namespace WindowsServiceDemo
{
    partial class MyService : ServiceBase
    {
        public MyService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
        }

        protected override void OnStop()
        {
            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
        }
    }
}

下面实现自己的简单功能,代码如下:

技术分享
using System;
using System.Diagnostics;
using System.IO;
using System.ServiceProcess;
using System.Timers;

namespace WindowsServiceDemo
{
    partial class MyService : ServiceBase
    {
        private Timer time = new Timer();
        public MyService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            WriteLog("服务启动,时间:"+DateTime.Now.ToString("HH:mm:ss") + "\r\n");

            time.Elapsed += new System.Timers.ElapsedEventHandler(MethodEvent);
            time.Interval = 2 * 1000;//时间间隔为2分钟
            time.Start();
        }

        protected override void OnStop()
        {
            WriteLog("服务停止,时间:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
        }

        private void MethodEvent(object source, System.Timers.ElapsedEventArgs e)
        {
            time.Enabled = false;

            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();
            string result = string.Empty;
            string startTime = DateTime.Now.ToString("HH:mm:ss");
            try
            {
                //.........

                result = "执行成功,时间为:"+ startTime;
            }
            catch (Exception exp)
            {
                result = "失败,原因:" + exp.Message;
            }
            finally
            {
                stopWatch.Stop();
                WriteLog(result);

                time.Enabled = true;
            }
        }

        /// <summary>
        /// 日志记录
        /// </summary>
        /// <param name="logInfo"></param>
        public void WriteLog(string logInfo)
        {
            try
            {
                string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
                if (!Directory.Exists(logDirectory))
                {
                    Directory.CreateDirectory(logDirectory);
                }
                string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                File.AppendAllText(filePath, logInfo);
            }
            catch
            {
            }
        }
    }
}
自定义服务代码

具体功能是2分钟执行一次,并记录日志。

 

c#创建、安装、卸载、调试windows服务的简单事例

原文:http://www.cnblogs.com/qk2014/p/4869675.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!