• .net 定时执行 windows 服务


    1.新建项目 --》 Windows 服务 2.Service1.cs代码

    using System;  
    using System.Collections.Generic;  
    using System.ComponentModel;  
    using System.Data;  
    using System.Diagnostics;  
    using System.ServiceProcess;  
    using System.IO;  
    using System.Text;  
    using System.Timers;  
    using System.Data.SqlClient;  
    using System.Threading;  
    namespace InnPoint  
    {  
        public partial class Service : ServiceBase  
        {  
            public Service()  
            {  
                InitializeComponent();  
            }  
            protected override void OnStart(string[] args)  
            {  
                EventLog.WriteEntry("我的服务启动");//在系统事件查看器里的应用程序事件里来源的描述  
                writestr("服务启动");//自定义文本日志  
                System.Timers.Timer t = new System.Timers.Timer();  
                t.Interval = 1000;  
                t.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrv);//到达时间的时候执行事件;   
                t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);   
                t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;   
            }  
            /// <summary>  
            /// 定时检查,并执行方法  
            /// </summary>  
            /// <param name="source"></param>  
            /// <param name="e"></param>  
            public void ChkSrv(object source, System.Timers.ElapsedEventArgs e)  
            {  
                int intHour = e.SignalTime.Hour;  
                int intMinute = e.SignalTime.Minute;  
                int intSecond = e.SignalTime.Second;  
                 
                if (intHour == 13 && intMinute == 30 && intSecond == 00) ///定时设置,判断分时秒  
                {  
                    try  
                    {  
                        System.Timers.Timer tt = (System.Timers.Timer)source;  
                        tt.Enabled = false;  
                        SetInnPoint();  
                        tt.Enabled = true;  
                    }  
                    catch (Exception err)  
                    {  
                        writestr(err.Message);  
                    }  
                }  
            }  
            //我的方法  
            public void SetInnPoint()  
            {  
                try  
                {  
                    writestr("服务运行");  
                    //这里执行你的东西  
                    Thread.Sleep(10000);  
                }  
                catch (Exception err)  
                {  
                    writestr(err.Message);  
                }  
            }  
            ///在指定时间过后执行指定的表达式  
            ///  
            ///事件之间经过的时间(以毫秒为单位)  
            ///要执行的表达式  
            public static void SetTimeout(double interval, Action action)  
            {  
                System.Timers.Timer timer = new System.Timers.Timer(interval);  
                timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)  
                {  
                    timer.Enabled = false;  
                    action();  
                };  
                timer.Enabled = true;  
            }  
      
            public void writestr(string readme)  
            {  
                //debug==================================================  
                //StreamWriter dout = new StreamWriter(@"c:/" + System.DateTime.Now.ToString("yyyMMddHHmmss") + ".txt");  
                StreamWriter dout = new StreamWriter(@"c:/" + "WServ_InnPointLog.txt", true);  
                dout.Write("/r/n事件:" + readme + "/r/n操作时间:" + System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));  
                //debug==================================================  
                dout.Close();  
            }  
            protected override void OnStop()  
            {  
                writestr("服务停止");  
                EventLog.WriteEntry("我的服务停止");  
            }  
        }  
    }  

    3.在Service1.cs设计页面右键添加安装程序

    4.ProjectInstaller.cs设计页面中

       serviceInstaller1属性中设置:

        Description(系统服务的描述)

        DisplayName (系统服务中显示的名称)

        ServiceName(系统事件查看器里的应用程序事件中来源名称)

       serviceProcessInstaller1属性设置:

          Account 下拉设置成 LocalSystem

    5.在.net Framework的安装目录可以找到InstallUtil.exe,可以复制出来放在你的服务生成的exe一起

    6.安装服务setup.bat批处理文件内容:InstallUtil Service1.exe ,安装好后可以在系统服务中找到你设置的服务名称然后可以启动这个服务

    7.卸载服务UnInstall.bat批处理文件内容:InstallUtil -u Service1.exe

    转自:http://blog.csdn.net/windxxf/article/details/6014538

  • 相关阅读:
    log4j2配置ThresholdFilter,让info文件记录error日志
    Thrift常见异常及原因分析(<i>UPDATING...</i>)
    fastjson序列化出现StackOverflowError
    mysql执行update语句受影响行数是0
    远程Gitlab新建的分支在IDEA里不显示
    rabbitmq延迟队列demo
    利用延迟消息队列取代定时任务
    利用spring实现服务启动就自动执行某些操作的2种方式
    从Joda-Time反观Java语言利弊
    Linux Shell test判断
  • 原文地址:https://www.cnblogs.com/yinchuan/p/5251251.html
Copyright © 2020-2023  润新知