Éviter que l'application freeze pendant le traitement ?

Signaler
Messages postés
6
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
8 mai 2010
-
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
25 mai 2012
-
Bonjour ! (Et désolé si je me suis trompé de section, je savait pas trop où poster...)

J'ai un léger problème avec mon code... pour résumer il s'agit d'une application qui transforme 4 caractères en 1 (exemple : 0001 devient A). Donc en général ça marche bien, mais là je faisait des tests pour voir combien de caractères pouvaient être traités à la fois. Il s'avère que l'application commence à freezer (mais ça termine quand même l'opération et le programme se defreeze) à partir d'environ 5000 caractères, et ça plante complètement à partir d'environ 40 000 (avec message du débuggeur et tout).
Entre 5000 et 40 000, bien que l'application marche, tout freeze pendant le calcul, la fenêtre est renommée "Nom de l'appli (ne répond pas)", et la barre de progresion que j'avais placé précisemment pour qu'on voit le déroulement n'est pas mise à jour. Après que le calcul soit terminé, tout revient à la normale, mais bon...

Donc ma question est la suivante : "Comment faire en sorte que l'application ne freeze pas pendant les calculs lourds ?"

Merci d'avance :)

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Ajoute un Application.DoEvents de temps a autre, ca permettra a ton appli de se raffraichir (vidage de la file d'attente des message)

après, y'a peut etre moyen (en plus) d'optimiser le traitement

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
6
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
8 mai 2010

Ok, j'essaye ça :)

Mais oui, je crois que je vais essayer une méthode de conversion différente..
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
25 mai 2012

bonjour,
cherche à utiliser un backgroundworker. ya un tuto sur multithreading quelque part. ça peut vraiment t'aider.