gpt4 book ai didi

c# - 窗体。 Form.Close 后定时器不停止

转载 作者:行者123 更新时间:2023-11-30 18:17:22 24 4
gpt4 key购买 nike

我有一个上下文应用程序,它创建新的 Form 以向用户显示一些信息。为此,该用户可以使用按钮关闭表单。然而,在 90 秒后,表单自行关闭,但首先弹出一个消息框让用户知道。

现在我很难理解为什么 MessageBox 会在表单第一次关闭后每隔 90 秒再次弹出。

我有一个用于 90 秒自动关闭并使用 Form.Close 关闭它的 Windows.Forms.Timer。我将表单添加到字典中,其中包含一些管理内容的 ID。

创建表单:

MainForm myform = new MainForm();
myform.plate = eventData.iPlate;
myform.tag = eventData.iTag;
formulario.image = eventData.Image;
formulario.PopulateMyFields();
ActivePopUps.Add(eventData.ide, myform);
myform.Show();

现在使用字典关闭它们

foreach (var popup in ActivePopUps)
{
if (popup.Key == eventData.some_id)
{
try
{
popup.Value.Close();
}
catch { }
ActivePopUps.Remove(popup.Key);
}
}

以及在 MainForm 中创建的计时器

mytimer = new System.Windows.Forms.Timer();
timer_mytimer .Interval = Properties.Settings.Default.ClosingTime; // 90000
mytimer.Tick+=new EventHandler(mytimerEvent);
mytimer.Enabled = true;
mytimer.Start();

和实际的定时器事件

private void mytimerEvent(object sender, EventArgs e)
{
MessageBox.Show("Hey ! Closing this one");
this.Close();
}

我相信我可以在调用 .Close() 之前停止计时器并使其停止,但我的问题是……Close 不应该这样做吗?甚至调用 .Dispose()?为什么计时器会继续工作,还有什么在后台存活?

最佳答案

只是为了澄清。 Sinatr 在他的评论中提供了正确的答案,所以问题得到了完美的回答,我的代码运行良好。

我在创建计时器时遗漏了以下内容:

this.mytimer = new System.Windows.Forms.Timer(this.components)

通过这样做,计时器链接到表单,以便在表单调用 Close() 时处理它。

关于c# - 窗体。 Form.Close 后定时器不停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43933999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com