![]()
1 1.system.windows.forms
2
3 2.system.threading.timer
4
5 3.system.timers.timer
6
7
8
9 using System;
10 using System.Collections.Generic;
11 using System.ComponentModel;
12 using System.Data;
13 using System.Drawing;
14 using System.Linq;
15 using System.Text;
16 using System.Threading;
17 using System.Threading.Tasks;
18 using System.Windows.Forms;
19
20 namespace winformTimer
21 {
22 public partial class Form1 : Form
23 {
24 //不精确
25 public System.Windows.Forms.Timer timerEve;
26 public Form1()
27 {
28 InitializeComponent();
29 CheckForIllegalCrossThreadCalls = false;
30 }
31
32 private void button1_Click(object sender, EventArgs e)
33 {
34 timerEve = new System.Windows.Forms.Timer();
35 timerEve.Interval = 1000;
36 timerEve.Tick += timerEve_Tick;
37 timerEve.Start();
38 }
39
40 void timerEve_Tick(object sender, EventArgs e)
41 {
42 label1.Text = DateTime.Now.ToString();
43 }
44 public System.Timers.Timer timeEveTwo;
45 private void button2_Click(object sender, EventArgs e)
46 {
47 //Thread thread = new Thread(new ParameterizedThreadStart(theout));
48 //thread.Start();
49 timeEveTwo = new System.Timers.Timer(1000);
50 //到达时间,执行事件
51 timeEveTwo.Elapsed += new System.Timers.ElapsedEventHandler(theout);
52 //执行一次为false 一直执行为true
53 timeEveTwo.AutoReset = true;
54 timeEveTwo.Start();
55
56 }
57 public void theout(object source,System.Timers.ElapsedEventArgs e)
58 {
59 //if(label2.InvokeRequired)
60 //{
61 // Action<string> changetime = (s) => { label2.Text = s.ToString(); };
62 // label2.Invoke(changetime);
63 //}
64 //else
65 //{
66 label2.Text = DateTime.Now.ToString();
67 //}
68 }
69 //Callback:一个 TimerCallback 委托,表示要执行的方法。
70 //State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。
71 //dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
72 //Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
73 public System.Threading.Timer threadtimer;
74
75 private void button3_Click(object sender, EventArgs e)
76 {
77 threadtimer = new System.Threading.Timer(new TimerCallback(timecall),null,0,1000);
78 }
79 private void timecall(object obj)
80 {
81 label3.Text = DateTime.Now.ToString();
82 }
83 }
84 }