C# WinForms。窗体结束后计时器不停止。关闭

C# WinForms。窗体结束后计时器不停止。关闭,c#,forms,winforms,timer,C#,Forms,Winforms,Timer,我有一个上下文应用程序,可以创建新的表单,向用户显示一些信息。此用户可以为此目的使用按钮关闭表单。然而,90秒后表单会自动关闭,但会首先弹出一个消息框让用户知道 现在我很难知道为什么在表单第一次关闭后,MessageBox会每隔90秒再次弹出一次 我有一个Windows.Forms.Timer用于90秒自动关闭并使用Form.close关闭它。我将表格添加到口述稿中,其中包含一些管理人员的ID 创建表单: MainForm myform = new MainForm(); myform.plat

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

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

我有一个Windows.Forms.Timer用于90秒自动关闭并使用Form.close关闭它。我将表格添加到口述稿中,其中包含一些管理人员的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()时释放它。

提示:如果使用表单设计器添加计时器,您将注意到源代码中的差异,这一行:
this.timer1=new System.Windows.Forms.timer(this.components)
这个。Close
表示窗体,而不是计时器。您可以从代码实例化计时器,因此它是一个独立于表单的对象以在关闭窗体之前清除计时器。您也可以将其放入
表单\u Closed
事件中。@Sinatr谢谢。太美了:)