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
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);
// 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)
aTimer.Interval = 1000;
aTimer.Enabled = true;
Console.WriteLine("按回车键结束程序");
Console.WriteLine(" 等待程序的执行......");
Console.ReadLine();
}
// 当时间发生的时候需要进行的逻辑处理等
// 在这里仅仅是一种方式,可以实现这样的方式很多.
private static void TimeEvent(object source, ElapsedEventArgs e)
{
// 得到 hour minute second 如果等于某个值就开始执行某个程序。
int intHour = e.SignalTime.Hour;
int intMinute = e.SignalTime.Minute;
int intSecond = e.SignalTime.Second;
// 定制时间; 比如 在10:30 :00 的时候执行某个函数
int iHour = 10;
int iMinute = 30;
int iSecond = 00;
// 设置 每秒钟的开始执行一次
if( intSecond == iSecond )
{
Console.WriteLine("每秒钟的开始执行一次!");
}
// 设置 每个小时的30分钟开始执行
if( intMinute == iMinute && intSecond == iSecond )
{
Console.WriteLine("每个小时的30分钟开始执行一次!");
}
// 设置 每天的10:30:00开始执行程序
if( intHour == iHour && intMinute == iMinute && intSecond == iSecond )
{
Console.WriteLine("在每天10点30分开始执行!");
}
}
}
}
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!");
}
}
}
}