winform c# 如写一个定时开始,结束的时间代码

现在我有一个 Test方法 例如: protected void Test() { //执行代码}
怎么写一个点击按钮判断开始,结束时间,执行间隔5分钟执行Test的方法。
说明一下:
1:点击“启用“按钮后,判断当前系统时间和设定的时间,是否在有效范围内,
2:在第一个条件满足的情况下,每隔5分钟执行方法。
3:到达结束时间,自动停止,不再执行方法。

用Thread或Timer控件,Thread:

            Console.WriteLine("开始时间:" + DateTime.Now.ToString("HH:mm:ss"));

            Console.WriteLine("5s後启动test()方法:");

            Thread.Sleep(5000);

            Console.WriteLine("结束时间:" + DateTime.Now.ToString("HH:mm:ss"));

            test();

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-06

你后面又加要求了,代码就不一样了。

这里要使用Timer和Thread线程。下面是代码:


Timer timer;
//启动按钮
private void button1_Click(object sender, EventArgs e)
{
    DateTime timeBegin = dateTimePicker1.Value;
    DateTime timeEnd = dateTimePicker2.Value;
    while(true)
    {
        DateTime now = DateTime.Now;
        if (now >= timeBegin && now <= timeEnd)
        {
            timer = new Timer();
            timer.Interval = 1000 * 60 * 5;
            timer.Tick += new System.EventHandler(Test);
            timer.Start();
            break;
        }
        System.Threading.Thread.Sleep(200);//休眠200毫秒判断一次时间
    }
            
}
//停止按钮
private void button2_Click(object sender, EventArgs e)
{
    timer.Stop();
}
private void Test(object sender, EventArgs e)
{
    DateTime timeBegin = dateTimePicker1.Value;
    DateTime timeEnd = dateTimePicker2.Value;
    DateTime now = DateTime.Now;
    if (now >= timeBegin && now <= timeEnd)
    {
        //要做的事情
    }
    else
    {
        timer.Stop();
    }
}

注意Test方法需按上面来写,原来的代码写在“要做的事情”这里。

追问

谢谢您提供的方案,现在我想问这这个Threading启动后,怎么放在后台。窗口卡不不动了,非到有效时间。

追答

奥,这样的话启动按钮里的代码,要另外写成一个线程。

追问

就是启动后假死了,要怎么办?

追答

就是因为程序中下面这句,使程序进程停止,产生假死情况:
System.Threading.Thread.Sleep(200);

解决办法吧启动按钮里的代码,改用一个新进程运行就好了。

本回答被提问者和网友采纳
第2个回答  2015-03-13
定时器可以满足你的需要

C#winform中,如何设置延时!求具体代码!(用timer控件)
timer1.Enabled=true;你的timer1的间隔时间设成10秒就行了。

winform C# iis 定时重启 源代码
这个很简单 写个Console或者Service程序计时 到了指定时候 使用Process类执行iisreset命令即可 例如: class Program { static void Main(string[] args) { Console.WriteLine("iis reset every 30 minutes..."); Thread t = new Thread(() => { if (DateTime.Now.Minute == 30) Process.Start...

C#Winform如何使用Timer控件定时去调用?
1、timer1.Interval设置时间间隔 timer1.Tick到达时间间隔时触发事件 test_tick时间处理函数 2、通常要执行需要使用timer1.Start();\/\/启动定时器timer1.Stop();.\/\/关闭定时器方法 一般代码过程如下:private void Form_Load(object sender, EventArgs e){timer1.Interval = 1000; timer1.Start...

c#中时间控件 如何在winform程序exe开始运行的时候,就要计时
Stopwatch timer = new Stopwatch();\/\/new一个stopwatch long total = 0;timer.Start();\/\/开始计算时间 for (long i = 1; i <= 100000000; i++){ total += i;} timer.Stop();\/\/结束点,另外stopwatch还有Reset方法,可以重置。Console.WriteLine(timer.Elapsed);\/\/显示时间 Console.Writ...

C# winform中实现暂停,结束,实时刷新父窗体数据?
public void setText(string value){ textbox1.text=value } B窗体中声明一个委托 public delegate void GetTextDel(string value);public delegate Seter; \/\/这个写在类,里面哦!!然后修改B窗体的构造函数:public B( GetTextDel del){ ...Seter=del;} 在textbox2的Textchange事件中填写...

c# winform窗体,简单倒计时器,按下button后计时器开始运行的代码
timer3.Enabled = false; label1.Text = "时间到!"; label1.ForeColor = Color.FromArgb(255, 0, 0); } } } private void button1_Click(object sender, EventArgs e) { timer1.Enabled = true; }

(急)c# winform 定时器设置了2秒执行一次,我想让它执行5次就自动停止...
int i=0;private void timer1_Tick(object sender, EventArgs e){if(i<5){ richTextBox1.Text += "\\n" + "aaa"; i++;}else{ myTimer.Stop();button3_Click(sender,e);}}private void button1_Click(object sender, EventArgs e) { myTimer.Enabled = true;Control.CheckFor...

c# winform 一个钟
加个TIMER控件,再加入如下代码:void MainFormLoad(object sender, EventArgs e){ timer1.Enabled=true;timer1.Interval=1000; \/\/时间间隔为1秒 } void Timer1Tick(object sender, EventArgs e){ this.label1.Text = System.DateTime.Now.ToString();} ...

C#WINFORM如何控制一段代码在3秒后关闭
Timer timer1; int count = 0; public Form2() { InitializeComponent(); timer1 = new Timer(); timer1.Interval = 1000; timer1.Tick += timer1_Tick; } private void timer1_Tick(object sender, EventArgs e) { Sound.Play(); count++; if (...

.net C# winform程序定时运行代码
你可以设置某段功能每隔1小时执行一次:如果时间在09:00到10:00之间 才执行 其他时间不执行。可以参考附件的代码 【每隔一小时检查过期未完成的工作】

相似回答