1、定时 任务方法1

 

C# 定时执行函数(winForm)

 

  需要使用timer 定时器控件

  timer1.Interval 设置时间间隔

  timer1.Tick 到达时间间隔时触发事件

  test_tick 时间处理函数

  timer1.Tick += new System.EventHandler(test_Tick);

  委托以处理事件 ,一般可以在Form 的构造函数 InitializeComponent构造界面组件函数中添加以上代码以注册test_Tick处理函数;

  当然,你也可以不用这么麻烦,再窗体视图中直接双击timer控件,系统就会自动帮你生成一个类似于test_Tick的处理函数

  通常要执行需要使用 timer1.Start();//启动定时器 timer1.Stop();.//关闭定时器方法

  一般代码过程如下:

  private void Form_Load(object sender, EventArgs e)

  {timer1.Interval = 1000;

  timer1.Start();}

  private void test_Tick(...)

  {

  //每隔一秒需要执行的函数体,timer start后每隔一秒就会执行该函数

  }

2‘ 方法2

    using System;
定时程序 _任务
using System.Timers;
定时程序 _任务
namespace 定时器ConsoleApplication1
定时程序 _职场_03
{
定时程序 _职场_06
class Class1
定时程序 _任务_07
{ 
定时程序 _职场_06  [STAThread] 
定时程序 _职场_06  
static void Main(string[] args)
定时程序 _职场_12  
{
定时程序 _职场_06   System.Timers.Timer aTimer 
= new System.Timers.Timer(); 
定时程序 _职场_06   aTimer.Elapsed 
+= new ElapsedEventHandler(TimeEvent); 
定时程序 _职场_06   
// 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)
定时程序 _职场_06
   aTimer.Interval = 1000
定时程序 _职场_06   aTimer.Enabled 
= true
定时程序 _职场_06   Console.WriteLine(
"按回车键结束程序");
定时程序 _职场_06   Console.WriteLine(
" 等待程序的执行......");
定时程序 _职场_06   Console.ReadLine();
定时程序 _任务_23  }

定时程序 _职场_06  
// 当时间发生的时候需要进行的逻辑处理等
定时程序 _职场_06
//    在这里仅仅是一种方式,可以实现这样的方式很多.
定时程序 _职场_06
private static void TimeEvent(object source, ElapsedEventArgs e) 
定时程序 _职场_27  
{  
定时程序 _职场_06   
// 得到 hour minute second  如果等于某个值就开始执行某个程序。
定时程序 _职场_06
   int intHour   = e.SignalTime.Hour;
定时程序 _职场_06   
int intMinute = e.SignalTime.Minute;
定时程序 _职场_06   
int intSecond = e.SignalTime.Second;
定时程序 _职场_06   
// 定制时间; 比如 在10:30 :00 的时候执行某个函数
定时程序 _职场_06
   int iHour   = 10;
定时程序 _职场_06   
int iMinute = 30;
定时程序 _职场_06   
int iSecond = 00;
定时程序 _职场_06   
// 设置  每秒钟的开始执行一次
定时程序 _职场_06
   if( intSecond == iSecond )
定时程序 _任务_40   
{
定时程序 _职场_06    Console.WriteLine(
"每秒钟的开始执行一次!");
定时程序 _任务_23   }

定时程序 _职场_06   
// 设置 每个小时的30分钟开始执行
定时程序 _职场_06
   if( intMinute == iMinute && intSecond == iSecond )
定时程序 _职场_47   
{
定时程序 _职场_06    Console.WriteLine(
"每个小时的30分钟开始执行一次!");
定时程序 _任务_23   }

定时程序 _职场_06   
定时程序 _职场_06  
// 设置 每天的10:30:00开始执行程序
定时程序 _职场_06
   if( intHour == iHour && intMinute == iMinute  && intSecond == iSecond )
定时程序 _休闲_55   
{
定时程序 _职场_06    Console.WriteLine(
"在每天10点30分开始执行!");
定时程序 _任务_23   }

定时程序 _任务_23  }
 
定时程序 _任务_23}

定时程序 _休闲_62}
 

3  方法3

   在配置文件里写要执行的时间,让程序定时执行。

1.建立配置文件App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!--设定每月执行计划任务的日期,先设定每月的16号,17号,25号执行-->
    <add key ="DateNum" value ="16,17,25"/>
  </appSettings>
</configuration>

2. 建立PlanWork.cs文件

using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Timers;

namespace PlanWork
{
    public class PlanWork
    {
        static void Main(string[] args)
        {
            Myplan mp = new Myplan();


            //*************************************************
            //设定间隔时间是15天,测试的时候设定时间为1000纳秒
            //Timer t = new Timer(15 * 24 * 60 * 60000);
            Timer t = new Timer(1000);
            //*************************************************


            //绑定定时触发的函数
            t.Elapsed += new ElapsedEventHandler(mp.RunMyplan);
            t.Start();
            Console.ReadLine();
        }

    }
    public class Myplan
    {
        public void RunMyplan(Object source, ElapsedEventArgs e)
        {
            //读取配置文件设定的日期时间
            string SetDate = ConfigurationManager.AppSettings["DateNum"].ToString();

            //获取现在的系统时间
            DateTime nowTime = System.DateTime.Now;
            string d = nowTime.Day.ToString(); //取日期

            //比较是否符合设定的时间,SetDate中是否有d的存在
            int i = SetDate.IndexOf(d);
            if (i >= 0)
            {
                //计划任务要执行程序
                Console.Write("\nToday is " + d + " day!");
            }

 

        }

    }
}