25
2016
03

开发简单的定时windows服务

给客户开发的WEB版客户销售管理系统需要自动把7天、15天或者30天未联系的客户从销售账户中踢出去放到销售自选分配池中,在开始是在Global.asax中写的定时操作方法,但是我们都应该知道IIS应用池回收机制导致定时任务不可能定时完成,最让人受不了的是我发布到服务器上之后定时任务直接不运行,日志也无法输出。

在同事的指引下,让我搞一个windows服务试一试。那我就找一找教程搞一个试一试吧。定时程序需要执行的任务很简单的:


        //遍历客户信息
        void EachClient()
        {
            log.WriteSetClientLog(“客户自动处理程序 开始执行”);
            int setData = 0;
            //获取所有符合条件的客户
            DataTable dt = sql.ReadTable(xxx);
            foreach(DataRow dr in dt.Rows)
            {
                //遍历扫描 该处理的客户就进行处理
                string id = dr["ID"].ToString();
                //获取该用户的交流类别
                string UserCnotes = sql.Readstr(xxx, 0).Trim();
                int BackDay = 0;
                if (UserCnotes == xxx)
                {
                    BackDay = int.Parse(ConfigurationManager.AppSettings[xxx]);
                }
                else if (UserCnotes == xxx)
                {
                    BackDay = int.Parse(ConfigurationManager.AppSettings[xxx]);
                }
                else
                {
                    BackDay = int.Parse(ConfigurationManager.AppSettings[xxx]);
                }
                //获取该用户最近的日志时间  用户已分配就加入分配日志 
                //没有分配时间就加入当前时间
                DateTime LastTime;
                string LastLog = sql.Readstr(xxx, 0).Trim();
                if (LastLog != xxx && LastLog != null)
                {
                    LastTime = DateTime.Parse(LastLog);
                }
                else
                {
                    LastTime = DateTime.Now;
                    sql.execsql(xxx);
                }
                if (BackDay - (DateTime.Now - LastTime).Days<=0)
                {
                    //当前时间与联系时间比较  获取天数m  即m天前联系的客户  该类型客户最大限度n,减去m,要是小于等于0,需要把客户返回分配池
                    //把客户踢回分配池
                    string strSetFlag = xxx;
                    sql.execsql(strSetFlag);
                    //添加修改记录
                    string StrInsert = xxx;
                    sql.execsql(StrInsert);
                    setData++;
                } 
                
            }
            log.WriteSetClientLog(客户自动处理程序 共处理  + setData +  条数据,全部客户数据于 + DateTime.Now.ToString(yyyy年MM月dd日 HH:mm:ss) +  遍历完成。);
        }

下面说一下怎么弄windows服务(开发环境:VS2015):


1、新建项目  框架选用 .NET Framework 4.0 找到 Windows服务 建立即可。

开发简单的定时windows服务 windows服务 定时任务  第1张


2、加入日志操作类库和数据库操作类库,增加App.config程序配置文件。

开发简单的定时windows服务 windows服务 定时任务  第2张

3、添加dll引用。

开发简单的定时windows服务 windows服务 定时任务  第3张


4、编写windows服务 逻辑。在cmServer(mashuai).cs 中F7 查看代码,开始编写代码。

OnStart 方法:


        protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("自动执行服务启动");//写入系统事件
            log.WriteSetClientLog("服务启动");//程序日志

            Timer t = new Timer();
            t.Interval = 1000;
            t.Elapsed += new System.Timers.ElapsedEventHandler(TimeEvent);
            t.AutoReset = true;//循环执行
            t.Enabled = true;//是否执行 Elapsed 事件

        }

TimeEvent 方法(上面中调用的):



        protected void TimeEvent(object source, ElapsedEventArgs e)
        {
            int intHouer = e.SignalTime.Hour;
            int intMinute = e.SignalTime.Minute;
            int intSecond = e.SignalTime.Second;
            if (intHouer==02 && intMinute==00 && intSecond==00)
            {
                try
                {
                    Timer nt = (Timer)source;
                    nt.Enabled = false;
                    //这里填写你的处理方法
                    nt.Enabled = true;

                }
                catch (System.Exception ex)
                {
                    log.WriteErrorLog(ex);
                }
            }
        }


 

OnStop 方法:


        protected override void OnStop()
        {
            EventLog.WriteEntry("自动执行服务停止");
            log.WriteSetClientLog("服务停止");
        }


5、安装与卸载 windows服务(管理员运行 VS2015 开发人员命令提示 )


//安装

installutil.exe G:\Server\cmServer\cmServer\bin\Debug\cmServer.exe

//卸载

installutil.exe /u G:\Server\cmServer\cmServer\bin\Debug\cmServer.exe



6、结果:运行之后生成文件(PS.我定时的16:00的)

开发简单的定时windows服务 windows服务 定时任务  第4张



本文标题:开发简单的定时windows服务
本文链接:https://masoft.cn/post/23.html
作者授权:除特别说明外,本文由 智汇软件 原创编译并授权 北京,深圳,重庆,大连,青岛,济南软件设计与定制 刊载发布。
版权声明:本文使用「署名-禁止演绎 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信