Bonjour à toutes et à tous !
J'ai un petit soucis sur un programme, il se trouve que celui-ci peut parfois s'exécuter en 2 ou 3 minutes (ce qui est tout à fais normal car il tourne et fais de gros traitements à chaque fois) mais quand je suis en Debug, au bout d'une minutes VisualStudio m'informe d'un ContextSwitchDeadlock : Le CLR n'a pas pu effectuer de transition du contexte COM 0x1a1a08 au contexte COM 0x1a1b78 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.
Du coup je souhaite exécuter ma méthode dans un BackgroundWorker et à cette méthode je dois lui passer un paramètre par référence (ref)... Apparement, de ce que j'ai vu sur le tutoriel du site, c'est pas trop possible... Hein ?
Quel sont vos sentiments la dessus ?
Merci à tous et @+
Antoine
Partager