Try Catch中的停止计时器
本文关键字:计时器 Catch Try | 更新日期: 2023-09-27 18:26:24
不确定为什么不起作用。我定义了一个计时器,它每2秒运行一个方法。在这种方法中,我有一个尝试。尝试执行此代码时,catch应禁用计时器,然后显示一个消息框。出于某种原因,我的消息框每2秒钟就会反复显示一次。为什么我的计时器不被禁用?
Timer timer1 = new Timer();
public MainForm()
{
timer1.Interval = 2000;
timer1.Tick += new EventHandler(OnTimer);
timer1.Enabled = true;
//More code
}
private void OnTimer(object sender, EventArgs e)
{
try
{
//Code
}
catch (Exception)
{
MessageBox.Show("Message");
timer1.Enabled = false;
this.Dispose();
}
}
谢谢-Jason
我猜MessageBox.Show("Message")
正在阻止timer1.Enabled = false;
的执行,因为它是一个模态对话框。尝试禁用计时器,这样它就不会在显示模式对话框之前先启动OnTimer回调:
private void OnTimer(object sender, EventArgs e)
{
try
{
// Code
}
catch (Exception)
{
timer1.Enabled = false;
MessageBox.Show("Message");
this.Dispose();
}
}
这将帮助您理解。。。
Timer timer1 = new Timer();
public MainForm()
{
timer1.Interval = 2000;
timer1.Tick += new EventHandler(OnTimer);
timer1.Enabled = true;
//More code
}
private void OnTimer(object sender, EventArgs e)
{
try
{
throw new InvalidOperationException("Now the catch executes! Poof!");
}
catch (Exception)
{
MessageBox.Show("Message");
timer1.Enabled = false;
this.Dispose();
}
}
也许你是想这么做的?
private void OnTimer(object sender, EventArgs e)
{
try
{
// code
}
catch (Exception)
{
MessageBox.Show("Message");
this.Dispose();
}
finally
{
timer1.Enabled = false;
}
}
您的尝试中没有任何内容,因此没有任何内容会失败。
如果你确实有一些代码,你确定它抛出了一个异常并命中了捕获?