Problème d'attente

beny100 Messages postés 213 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 1 avril 2009 - 29 janv. 2007 à 20:13
AMP56 Messages postés 5 Date d'inscription lundi 1 janvier 2018 Statut Membre Dernière intervention 23 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!

10 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
beny100 Messages postés 213 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 1 avril 2009
6 févr. 2007 à 08:50
je ne comprends pas bien :
un traitement long dans le thread principal de l'application, c'est à dire celui du GUI ?

peux tu me l'expliquer?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
9 févr. 2007 à 22:25
Je ne vois pas comment l'expliquer autrement...
Un traitement long quoi, quelquechose qui s'execute durant plusieurs dizaines de secondes justement.

/*
coq
MVP Visual C#
CoqBlog
*/
0
mkihbo Messages postés 7 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 25 février 2007
19 févr. 2007 à 00:49
Salut,
tient j'ai le même problème et oui c'est pendant un traitement long lancé depuis la fenetre principale...

à l'époque il suffisait d'un Application.ProcessMessages; sous Delphi....

Quel est l'equivalent en C# ?
Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
19 févr. 2007 à 07:28
Salut,


Application.DoEvents();

/*
coq
MVP Visual C#
CoqBlog
*/
0
mkihbo Messages postés 7 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 25 février 2007
21 févr. 2007 à 13:26
J'essaie des ce soir.
Merci beaucoup. (d'autant qu'en lisant mieux j'aurais probablement trouvé...  )
0
mkihbo Messages postés 7 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 25 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.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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

/*
coq
MVP Visual C#
CoqBlog
*/
0
mkihbo Messages postés 7 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 25 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é
0
AMP56 Messages postés 5 Date d'inscription lundi 1 janvier 2018 Statut Membre Dernière intervention 23 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."
0
Rejoignez-nous