C# 创建Windows Service(Windows服务)程序

为什么写这个文章,发现大佬都在研究一些服务啊,架构之类,然后自己把会整的也拿出来整整,也是温故技术吧。
windows服务可以随电脑启动了默默在后台处理一些事情,觉得有些价值!废话不多说!
一步步开始,
1,新建windows server
在这里插入图片描述
2,新增server程序,并且添加安装程序
在这里插入图片描述
这里要知道的是,windows 是需要引导安装的,同时也是依附环境安装启动的!后面介绍!

3,配置一下基本属性
在这里插入图片描述
相信到这里,你已经看出来一个是 服务在任务管理器的配置,以另外一个是在计算机服务中的配置,这里我简单配置一下,服务中的吧,如图显示
在这里插入图片描述
这样写的名字也是非常好区分的!

4,接下来我们写点东西来让他跑起来
在这里插入图片描述
写的代码如下,就是让他5秒写一条记录

public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();

            System.Timers.Timer timer = new System.Timers.Timer();
            timer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent);
            timer.Interval = 5000;//每5秒执行一次
            timer.Enabled = true;

        }

        //定时执行事件
        private void TimedEvent(object sender, System.Timers.ElapsedEventArgs e)
        {
            //业务逻辑代码
            WriteLog("123123123");
        }


        protected override void OnStart(string[] args)
        { 
            this.WriteLog("客户端数据同步服务:【服务启动】");
        }

        protected override void OnStop()
        {
            this.WriteLog("客户端数据同步服务:【服务停止】");
        }

        protected override void OnShutdown()
        {
            this.WriteLog("客户端数据同步服务:【计算机关闭】");
        }


        #region 记录日志
        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="msg"></param>
        private void WriteLog(string msg)
        {
            //该日志文件会存在windows服务程序目录下
            string path = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";
            FileInfo file = new FileInfo(path);
            if (!file.Exists)
            {
                FileStream fs;
                fs = File.Create(path);
                fs.Close();
            }

            using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    sw.WriteLine(DateTime.Now.ToString() + "   " + msg);
                }
            }
        }

        #endregion

    }

代码比较简单,就不多说咯

5,接下里启动服务,熟悉winform或者控制台的朋友都知道,exe 的程序双击启动就好,我前面说了windowserve是依赖启动的,不相信,我们去bin打开一下 exe会怎么样!

在这里插入图片描述
看到没,就是这么尴尬!他说要先启动 InstallUtil.exe,那么这个东东在哪里呢

路径在这里:C:\Windows\Microsoft.NET\Framework\v2.0.50727
在这里插入图片描述
当然这里要注意的是你的windows server 项目是什么版本的,如果是4.0的你要找到 4.0 的InstallUtil
地址是:C:\Windows\Microsoft.NET\Framework\v4.0.30319

在这里插入图片描述
因为我的framwork 是在c盘是在这个地方的,所以你要自己在framwork 路径中找到,简答来说是你VS安装路径,vs安装肯定是安装了framwork了的!

所以你可以直接复制一个放到你的bin目录下面

6,那么接下来先启动InstallUtil.exe,,然后执行exe 的服务程序,我这里写了要给bat的处理程序比较简单

F:\winfrom服务程序\学习服务程序\windowsServerText\windowsServerText\bin\Debug\InstallUtil.exe 
F:\winfrom服务程序\学习服务程序\windowsServerText\windowsServerText\bin\Debug\windowsServerText.exe

Net Start windowsServerText 

sc config windowsServerText start= auto

pause

7,开启一下看看情况

在这里插入图片描述
可以自己右键启动一下,或者自己写个bat
启动之后,跟据我写的代码是5秒就会在 log.txt 中写段话的,我已经启动,现在去看看

在这里插入图片描述
文件生成了也写进去了!

8,至于怎么调试,我们可以附加到任务管理器中的进程中,就可以了!

比较简单,当然现在有开源的Quartz.Net项目,也能够做的定时任务,而且功能十分强大,小菜我也在研究中,欢迎指教!

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值