Si ça freez comme Bapt a dis tu l'utilise dans un BackgroundWorker (ça fera comme si c'étais séparé) donc aucun lag sur la Form et en plus y'as que 3 evenements pour le bg_worker donc simple a faire
J'en avais fait un exemple ici : http://reality-gaming.fr/threads/c-...meliorer-la-fluidite-dune-application.314912/
Dans ta fonction du tool tu lance le BgWorker :
Code:
backgroundWorker1.RunWorkerAsync();
Dans cette événements tu choisit le DoWork et tu double clique dessus tu aura une fonction vierge tu ajoute ta boucle dedans et ton code
Code:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)//On retrouve ta boucle dans le DoWork (RunAsync)
{
BackgroundWorker backgroundWorker = (BackgroundWorker)sender;
//Fonction ici
Thread.Sleep(1000);//Pause du thread pendant 1 seconde
}
}
Ensuite dans Progress_Changed (techniquement t'en a pas besoins mais faut les 3 etat du bg_worker pour pas lever d'exception)
Code:
if (e.ProgressPercentage != 0)
{
UpdatePing(e.ProgressPercentage);
}
Il fonctionne avec les méthodes Async et Wait donc possibilité de faire des exceptions et de mettre en pause (une pause est égale a la fin de la boucle) Tu peux aussi tester les méthodes qui te retourne des erreurs ou faire des pause & start