注册的timer事件是新建立的一个线程,所以在要用委托,你可以参考下我改的,网上也有很多实例,可以自己对比看看
- public partial class Form1 : Form
- {
- System.Timers.Timer timer_test1=new System.Timers.Timer ();
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
-
- timer_test1.Enabled = true;
- timer_test1.Start();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- timer_test1.Elapsed += new System.Timers.ElapsedEventHandler(changetext);
- timer_test1.Interval = 1000;
- timer_test1.AutoReset = true;
- }
- private int n = 0;
- public delegate void BtnDisplay(string msg); //声明委托
- public void changetext(object sender, System.Timers.ElapsedEventArgs e)
- {
- n += 1;
- showmsg(n.ToString ()); //调用委托方法
- if (n > 1000)
- {
- n = 0;
- }
- }
- private void showmsg(string msg)
- {
- if (button1.InvokeRequired )
- {
- BtnDisplay BtnDisplay = showmsg;
- this.Invoke(BtnDisplay ,new object[] { msg});
- }
- else
- {
- button1 .Text = msg;
- }
- }
- }
复制代码 |