J'ai une application qui démarre System.Threading.Timer, puis cette minuterie toutes les 5 secondes lit des informations à partir d'une base de données liée et met à jour l'interface utilisateur graphique sur la forme d'application principale;Objet Exclusion et application multi-threads
Depuis le System.Threading.Timer créer un autre thread pour l'événement Tick, je dois utiliser Object.Invoke pour mettre à jour l'interface utilisateur sur la principale forme d'application avec le code comme ceci:
this.Invoke((MethodInvoker)delegate()
{
label1.Text = "Example";
});
L'application fonctionne très bien, mais parfois, lorsque l'utilisateur ferme le formulaire principal, puis ferme l'application, si le deuxième thread sur l'événement timer_tick met à jour l'interface utilisateur sur le thread principal, l'utilisateur obtient une exception ObjectDisposedException.
Comment puis-je faire pour arrêter et fermer le temporisateur de filetage avant de fermer le formulaire principal et d'éviter que l'objet ne dispose d'exception?
'System.Threading.Timer' n'a pas d'événement' Tick'. Le seul temporisateur BCL qui possède réellement l'événement 'Tick' est le' System.Windows.Forms.Timer'. Pouvez-vous préciser lequel vous utilisez? C'est important. –