Besoin de maîtriser le multi-threading [Résolu]

Signaler
Messages postés
8
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
13 juin 2011
-
Messages postés
8
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
13 juin 2011
-
Bonjour à tous,

En ce moment je suis en train de développer une application vb.net en WinForms de calcul de coûts

Néanmoins, le programme est très lent et la fonction de calcul des coûts, une fois lancée, bouffe toutes les ressources processeurs et alourdit énormément le serveur et en plus des messages d'erreurs apparaissent signalant que les ressources du processeur sont au limites avec possibilité de continuer l'exécution.
Plusieurs amis m'ont suggérés de développer en utilisant le multi-threading, ou le background worker mais j'arrive pas à saisir le principe ni la manière de développer avec ces deux notions.
Merci de bien vouloir m'aider.

4 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
un simple Application.Doevents placé dans tes boucles peuvent surement débloquer la chose.

en effet, si tu as de longues et lourdes boucles, sans DoEvents,
ton processus ne va pas rendre la main aux autres process. Windows v a le detecter et va te proposer de stopper ton process, le pensant perdu dans une boucle sans fin.
Messages postés
8
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
13 juin 2011

En faite voilà le message d'erreur qui apparaît pendant l'exéction :
"Le CLR n'a pas pu effectuer de transition du contexte COM 0x1f87b0 au contexte COM 0x1f8920 pendant 60 secondes. Le thread qui possède le contexte/cloisonnement de destination est probablement en train d'attendre ou de traiter une opération très longue sans pompage des messages Windows. Cette situation a généralement des effets négatifs sur les performances et peut parfois entraîner le blocage de l'application ou une utilisation ininterrompue de la mémoire. Pour éviter ce problème, tous les threads STA (Single Threaded Apartment) doivent utiliser des primitives d'attente de pompage (par exemple CoWaitForMultipleHandles) et pomper de manière régulière les messages lors des opérations qui sont longues à s'exécuter."
et il me donne la possibilité de continuer l'exécution.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
ca colle avec ce que je t'ai dit.

"traiter une opération très longue sans pompage des messages Windows"

précisément ce que cible DoEvents^^
Messages postés
8
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
13 juin 2011

Je te remercie BEAUCOUP ça marche.