beny100
Messages postés213Date d'inscriptionvendredi 17 novembre 2006StatutMembreDernière intervention 1 avril 2009
-
29 janv. 2007 à 20:13
AMP56
Messages postés5Date d'inscriptionlundi 1 janvier 2018StatutMembreDernière intervention23 juillet 2020
-
8 mars 2020 à 15:24
bonsoir, mon application qui tourne sur csharp sarrête a chaque que je le lance et me donne le message suivant:
Le CLR n'a pas pu effectuer de transition du contexte COM 0x1a0f40 au contexte COM 0x1a10b0 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.
je voudrais savoir comment resoudre ce problème.?
je le cherche depuis longtemps aidez moi SVP!
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 3 févr. 2007 à 19:36
Salut,
Il s'agit apparemment d'un message du MDA "ContextSwitchDeadlock", il s'agit ici d'un message destiné à signaler la présence potentielle d'un problème
Tu ne ferais pas un traitement long dans le thread principal de l'application, c'est à dire celui du GUI ?
mkihbo
Messages postés7Date d'inscriptionjeudi 8 avril 2004StatutMembreDernière intervention25 février 2007 21 févr. 2007 à 13:31
Heu, j'ai oublié un truc.
Un ami m'a conseillé de résoudre le problème en faisant faire le traitement en Thread géré par le threadpool...
Cela n'est-il pas plus judicieux ?
Je ferai le test pour voir les avantages et inconvenients des 2 solutions et vous donnerai les résultats.
Cordialement.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 24 févr. 2007 à 10:20
Oui, si tu peux te permettre de traiter ceci via des threads, c'est probablement mieux.
Je t'ai parler de DoEvent juste parce que tu as demander l'équivalent de ProcessMessages
mkihbo
Messages postés7Date d'inscriptionjeudi 8 avril 2004StatutMembreDernière intervention25 février 2007 25 févr. 2007 à 15:29
Bon ...
Je n'aurais probablement pas le temps de tester le fonctionnement en thread ce WE mais DoEvents() fonctionne bien (les perfs par contre sont à la rue, mais je pense que c'est mon traitement qu'il faut optimiser...)
La je me bats avec un datagridview (ça marche décidement pas comme en Delphi :D )
Je verrais donc après, quand j'en serais à l'optimisation...
Merci en tout cas.
++
Hervé
AMP56
Messages postés5Date d'inscriptionlundi 1 janvier 2018StatutMembreDernière intervention23 juillet 2020 8 mars 2020 à 15:24
Bonjour,
J'avais le même problème.
Cela provenait de ce point :
"Dans Visual Studio, si vous ajoutez une OpenFileDialog à votre formulaire à l’aide d’une opération glisser, vous devez modifier la méthode InitializeOpenFileDialog suivante en supprimant la ligne qui crée une nouvelle instance de OpenFileDialog."