I have a context app that creates new Form to show some info to the user. This user can close the form using a button for that purpose. However after 90 secs the form closes by itself but pops up a MessageBox first to let the user know.
Now I'm having a hard time to know why that MessageBox would pop up again every 90 secs after the form is already closed for the first time.
I have a Windows.Forms.Timer for the 90 sec auto close and using Form.Close to close it. I add the forms to a Dictorionary with their ID for some management stuff.
Creating the forms :
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();
Now closing them using the Dictionary
foreach (var popup in ActivePopUps)
{
if (popup.Key == eventData.some_id)
{
try
{
popup.Value.Close();
}
catch { }
ActivePopUps.Remove(popup.Key);
}
}
And the timer created in 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();
And the actual Timer Event
private void mytimerEvent(object sender, EventArgs e)
{
MessageBox.Show("Hey ! Closing this one");
this.Close();
}
I believe I could be able to stop the timer before calling .Close() and make it stop but my question is .... isn't Close supposed to do that? Even making a call to .Dispose()? Why does the timer keep working and what else does survive on the background?
Just to clarify. The correct answer was provided by Sinatr in his comment, so the question is perfectly answered and my code is working fine.
I was missing the following when creating the timer:
this.mytimer = new System.Windows.Forms.Timer(this.components)
By doing this, the timer is linked to the form so that it gets disposed when the Close() is called by the Form.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With