J'ai un programme que je dirige et au milieu que je reçois ce message:un message étrange sur les threads en C#
Managed Debugging Assistant 'ContextSwitchDeadlock' a détecté un problème dans « C: \ Documents and Settings \ Lena G \ Mes documents \ SchoolStuff \ Information IR \ Travail à domicile \ FianlProject \ finalProject \ finalProject \ bin \ Debug \ finalProject.vshost.exe '. Informations supplémentaires: Le CLR n'a pas pu passer du contexte COM 0x3407968 au contexte COM 0x3407ad8 pendant 60 secondes. Le thread qui possède le contexte/appartement de destination est probablement en train de faire une attente sans pompage ou de traiter une opération très longue sans pomper les messages Windows. Cette situation a généralement un impact négatif sur les performances et peut même conduire à une non-réactivité de l'application ou à une accumulation continue de l'utilisation de la mémoire au fil du temps. Pour éviter ce problème, tous les threads STA (single threaded apartment) doivent utiliser des primitives d'attente de pompage (telles que CoWaitForMultipleHandles) et pomper régulièrement des messages lors d'opérations longues. Je comprends que cela a quelque chose à voir avec le fait qu'il fonctionne pendant 60 secondes sans s'arrêter ou quelque chose comme ça? Comment est-ce un problème? Je mets également [STAThread] avant le principal de mon programme parce que si je le supprime puis il me montre ce message:
Une exception non gérée de type "System.Threading.ThreadStateException" s'est produite dans System.Windows.Forms.dll Informations supplémentaires: Le thread en cours doit être défini sur le mode STA (Single Thread Apartment) avant que les appels OLE puissent être effectués. Assurez-vous que votre fonction Main a STAThreadAttribute marqué dessus. Cette exception n'est levée que si un débogueur est attaché au processus.
Quelqu'un sait comment je peux résoudre ce problème?
Merci à l'avance,
Lena
Si je désactive le blocage du contexte, est-ce que cela peut faire du tort? J'utilise Visual Studio 2008 .. –
Rien ne va exploser. Vous pourriez avoir une impasse. Vous le découvrirez assez vite, votre programme va geler. –