Besoin de maîtriser le multi-threading

Résolu
baatoutmehdi Messages postés 8 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 13 juin 2011 - 24 févr. 2009 à 10:13
baatoutmehdi Messages postés 8 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 13 juin 2011 - 24 févr. 2009 à 10:50
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.
A voir également:

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2009 à 10:22
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.
3
baatoutmehdi Messages postés 8 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 13 juin 2011
24 févr. 2009 à 10:37
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.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 févr. 2009 à 10:43
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^^
0
baatoutmehdi Messages postés 8 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 13 juin 2011
24 févr. 2009 à 10:50
Je te remercie BEAUCOUP ça marche.
0
Rejoignez-nous