0

我编写了一个简单的计时器,每 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 秒什么都没有发生.. 为什么会这样?

谢谢!

4

2 回答 2

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();
    }
}

在此处输入图像描述 向我们展示您的代码或在其他任何地方发现错误。

于 2013-08-01T13:45:05.537 回答
3

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

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

因此,要验证您的代码是否真正工作,请注册一个侦听器,使用其他方式(如 Console.WriteLine 或 MessageBox.Show)或在您的loginTimer_Tick method.

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

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

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

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

loginTimer.Tick += loginTimer_Tick;
于 2013-08-01T14:03:08.827 回答