仅使用Timer一次

时间:2010-05-15 18:04:42

标签: c# winforms timer

我想在主表单初始化后的1秒钟内只使用一次计时器。 我认为以下会有一个消息框说“Hello World”只有一次,但实际上每隔一秒就会出现一个新的消息框“Hello World”。

为什么这样?我把t.Stop()放在了tick事件中。 另外,我是否需要以某种方式处理定时器以避免内存泄漏?

        Timer t = new Timer();
        t.Interval = 1000;                
        t.Tick += delegate(System.Object o, System.EventArgs e)
                        { MessageBox.Show("Hello World"); t.Stop(); };

        t.Start();   

请帮助并展示是否有更好的方法吗? 感谢。

3 个答案:

答案 0 :(得分:9)

MessageBox.Show("Hello World"); t.Stop();替换为t.Stop();MessageBox.Show("Hello World");。因为您没有按时按OK,计时器已经再次勾选,您从未到达停止代码。

答案 1 :(得分:2)

t.Stop();放在MessageBox.Show("Hellow World");

之前

答案 2 :(得分:1)

您也可以使用System.Timers.Timer并将AutoReset设置为false来实现此目的。我正在研究使用哪个计时器,而不喜欢这个计时器,因为它不需要单独的停止命令。

using System;
using System.IO;
using System.Timers;

System.Timers.Timer t = new System.Timers.Timer() {
    Interval = 1000,
    AutoReset = false
};

t.Elapsed  += delegate(System.Object o, System.Timers.ElapsedEventArgs e)
    { Console.WriteLine("Hell");}; 
t.Start();