J'ai un chronomètre exécuté dans un thread différent, qui met à jour le thread GUI dans une étiquette pour montrer que le temps passe. Lorsque mon programme se ferme, il lance un ObjectDisposedException
lorsque j'appelle this.Invoke(mydelegate);
dans l'interface graphique de formulaire pour mettre à jour l'étiquette avec l'heure du chronomètre.ObjectDisposedException - chronomètre en cours d'exécution dans le thread GUI
Comment puis-je me débarrasser de ce ObjectDisposedException
?
J'ai essayé d'arrêter le chronomètre dans l'événement FormClosing, mais il ne le gère pas.
Voici le code:
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
stopwatch = sw;
sw.Start();
//System.Threading.Thread.Sleep(100);
System.Threading.Thread t = new System.Threading.Thread(delegate()
{
while (true)
{
TimeSpan ts = sw.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds/10);
timeElapse = elapsedTime;
UpdateLabel();
}
});
stopwatchThread = t;
t.Start();
public void UpdateLabel()
{
db = new doupdate(DoUpdateLabel);
this.Invoke(db);
}
public void DoUpdateLabel()
{
toolStripStatusLabel1.Text = timeElapse;
}
pouvez-vous poster le code? – hackerhasid