Donc, je sais à cause de la question Can Timers get automatically garbage collected? que le System.Timers.Timer
ne sera pas recueilli en premier lieu. Mais ma vraie question est: est-ce que je dois arrêter ou jeter la minuterie?Dois-je arrêter System.Timers.Timer?
private void CreateTimer()
{
var timer = new Timer();
timer.Elapsed += TimerElapsed;
timer.Interval = 30000;
timer.AutoReset = true;
timer.Enabled = true;
}
Je veux dire que ce temporisateur fonctionnera pour toujours. Mais maintenant je n'ai plus besoin de mon objet qui a créé le Timer dans la Méthode. Dois-je arrêter ou éliminer le Timer
pour qu'il soit ramassé?
Il existe une différence entre arrêter et éliminer. L'arrêt d'une minuterie serait ce dont quelqu'un aurait besoin pendant le cycle de vie du minuteur. – apomene
Vous pouvez le vérifier vous-même: Créer quelque chose comme MesseBox.Show on Elapsed, puis le tuer, par exemple, en fermant subWindow. – sTrenat
Je ne pense pas que ce sera ramassé les ordures jusqu'à ce que vous appelez «disposer» dessus. Ce n'est pas grave si vous «arrêtez» la minuterie. Plus ici: 'Toujours appeler Dispose avant de libérer votre dernière référence au composant. Sinon, les ressources utilisées ne seront pas libérées tant que le garbage collector n'aura pas appelé la méthode Finalize de l'objet Component.' https://msdn.microsoft.com/en-us/library/3cc9y48w(v=vs.110).aspx – Achilles