我编写了一个简单的计时器,每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秒没有任何事情发生..为什么会这样?
谢谢!
答案 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();
}
}
向我们展示您的代码或在其他任何地方发现错误。
答案 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;