我的C#定时器代码不起作用

时间:2013-08-01 13:39:33

标签: c# timer

我编写了一个简单的计时器,每15秒运行一次,以播放一些消息。然而,没有任何事情发生。

  public void InitTimer()
        {
            loginTimer = new Timer();
            loginTimer.Tick += new EventHandler(loginTimer_Tick);
            loginTimer.Interval = 15000;
            loginTimer.Start();
        }

        private void loginTimer_Tick(object sender, EventArgs e)
        {
            Debug.WriteLine("Test!");
        }

这是我的代码。

单击按钮时调用以下内容:

InitTimer();

但每15秒没有任何事情发生..为什么会这样?

谢谢!

2 个答案:

答案 0 :(得分:4)

我做了你说的一切,没有任何问题:

public partial class Form1 : Form
{
    Timer loginTimer;

    public Form1()
    {
        InitializeComponent();
    }

    public void InitTimer()
    {
        loginTimer = new Timer();
        loginTimer.Tick += new EventHandler(loginTimer_Tick);
        loginTimer.Interval = 1000;
        loginTimer.Start();
    }

    private void loginTimer_Tick(object sender, EventArgs e)
    {
        MessageBox.Show("Test!");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        InitTimer();
    }
}

enter image description here 向我们展示您的代码或在其他任何地方发现错误。

答案 1 :(得分:3)

代码工作正常。 But nothing happens every 15 seconds.. why is that?嗯,事情发生了,但是你看不到它。为什么?因为您使用的是Debug.WriteLine

Console.WriteLine不同,Debug输出到TraceListener,而不是控制台。为了查看输出,您需要注册一个监听器(我确定您没有)。

因此要验证您的代码是否真的有效,注册一个监听器,使用其他方式(如Console.WriteLine或MessageBox.Show)或只是loginTimer_Tick method 中设置断点

要注册侦听器并输出到控制台,您可以这样继续:

TextWriterTraceListener listener = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(listener); 

确保您处于调试模式(或者您手动定义了debug标志)。

作为旁注,您的委托构造函数调用是多余的,您可以将其缩短为

loginTimer.Tick += loginTimer_Tick;