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

baatoutmehdi 8 Messages postés jeudi 2 octobre 2008Date d'inscription 13 juin 2011 Dernière intervention - 24 févr. 2009 à 10:13 - Dernière réponse : baatoutmehdi 8 Messages postés jeudi 2 octobre 2008Date d'inscription 13 juin 2011 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 févr. 2009 à 10:22
3
Merci
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.

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Renfield
baatoutmehdi 8 Messages postés jeudi 2 octobre 2008Date d'inscription 13 juin 2011 Dernière intervention - 24 févr. 2009 à 10:37
0
Merci
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.
Commenter la réponse de baatoutmehdi
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 févr. 2009 à 10:43
0
Merci
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^^
Commenter la réponse de Renfield
baatoutmehdi 8 Messages postés jeudi 2 octobre 2008Date d'inscription 13 juin 2011 Dernière intervention - 24 févr. 2009 à 10:50
0
Merci
Je te remercie BEAUCOUP ça marche.
Commenter la réponse de baatoutmehdi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.