黑马程序员技术交流社区

标题: C#定时器的问题 [打印本页]

作者: 化宝峰    时间: 2013-4-24 17:09
标题: C#定时器的问题
缩减代码如下:
private System.Timers.Timer myTimer;

private void InitTime()
{
    myTimer = new System.Timers.Timer(10000);
    myTimer.Elapsed += new ElapsedEventHandler(myTimer_Tick)
    myTimer.AutoReset = true;
}

private void myTimer_Tick(object sender, EventArgs e)
{
    //定时时间到,业务处理代码
    ......
    ......
}

private void TimerTimeReset()
{
    //在这个函数里面如何设置计时器myTimer,让它从10秒重新开始计时。
}

//这里,Enable属性,Start()、Stop()、Close()方法,对它的时间有什么影响,要是能一并解答下,就更好了,多谢。



作者: 许庭洲    时间: 2013-4-25 06:07
先用if语句判断计时器myTimer是否为10秒钟,若是则调用myTimer_Tick方法,否则继续等待计时器myTimer的触发。
作者: 张伟86    时间: 2013-5-1 01:25
本帖最后由 张伟86 于 2013-5-1 01:27 编辑

1、计时器的10秒间隔启动如代码所示;
2、Enabled属性在为true时等同于调用Start函数,等于false时等同于调用Stop函数;当Enabled为true时计时器便开始计算时间,等待间隔时间长的时间后执行处理函数;
3、如果在 Timer 已启动后设置重新间隔,计数会重置。例如,如果将间隔设置为 5 秒,然后将 Enabled 属性设置为 true,则计数将在设置 Enabled 时开始。如果在计数为 3 秒时将间隔重置为   10 秒,则 Elapsed 事件在 Enabled 设置为 true 的 13 秒之后第一次引发。
4、Close函数调用后释放了Timer实例,实例不存在了,实例中存在的属性intervel也就不存在了,也就谈不上对时间的影响了。
5、代码如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Timers;

  10. namespace WindowsFormsApplication1
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         private static System.Timers.Timer myTimer;

  15.         private void InitTime()
  16.         {
  17.             myTimer = new System.Timers.Timer(10000);
  18.             myTimer.Elapsed += new ElapsedEventHandler(myTimer_Tick);
  19.             myTimer.AutoReset = true;
  20.         }

  21.         private void myTimer_Tick(object sender, EventArgs e)
  22.         {
  23.             //定时时间到,业务处理代码
  24.             MessageBox.Show("Helllo"); //使用简单的MessageBox做测试
  25.         }

  26.         private void TimerTimeReset()
  27.         {
  28.             //在这个函数里面如何设置计时器myTimer,让它从10秒重新开始计时。
  29.             //myTimer.Enabled = true; //此处使用Enabled属性开启计时器;也可使用Start属性开始计时器,都能达到10秒后重新开始计时的效果;
  30.             myTimer.Start();
  31.         }

  32.         //这里,Enable属性,Start()、Stop()、Close()方法,对它的时间有什么影响,要是能一并解答下,就更好了,多谢。


  33.         public Form1()
  34.         {
  35.             InitializeComponent();
  36.             InitTime();     //调用此函数初始化myTimer实例
  37.             TimerTimeReset();   //启动计时器
  38.         }
  39.     }
  40. }
复制代码

作者: 崔宏奎    时间: 2013-5-1 12:47
额,我的建议吧。。。。查MSDN比较好~~而且C#里直接右键,转到定义行了,MSDN都不用查~~




作者: 化宝峰    时间: 2013-5-2 23:47
张伟86 发表于 2013-5-1 01:25
1、计时器的10秒间隔启动如代码所示;
2、Enabled属性在为true时等同于调用Start函数,等于false时等同于调 ...

谢谢了,不错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2