Erreur ContextSwitchDeadlock

Résolu
Signaler
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009
-
Messages postés
213
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
1 avril 2009
-
Bonjour à tous,

J'ai l'erreur suivante dans mon application :

ContextSwitchDeadlock was detected
The CLR has been unable to transition from COM context 0x1c08f0 to COM context 0x1c0a60 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.

Est-ce que quelqu'un sait pourquoi ?

Mon application utilise MySQLDriverCS.

Merci pour vos réponses

Alain

13 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Comme n'importe quel autre attribut :

[MTAThread]
static void Main(string[] args)
{
}

/*
coq
MVP Visual C#
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Salut,

Il s'agit d'un application Console ou WinForm ?
L'erreur survient souvent ? (à chaque execution ?)

Sinon il me semble que MySQLDriverCS n'est plus trop maintenu, tu devrais plutôt regarder du côté du connecteur .Net fournis par MySQLAB.

/*
coq
MVP Visual C#
*/
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009

Salut,

oui, c'est une application console !
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009

L'erreur survient toujours, et au bout de 1 min !!
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Oui ça j'avais saisis la durée ;-)
En fait sauf erreur ce problème est dû au fait que tu fais une opération bloquante dans le thread principal de l'application, ce qui empêche la transmission correcte des messages.
Il me semble que ce problème peut être résolu via l'ajout de l'attribut MTAThread sur la méthode main.

/*
coq
MVP Visual C#
*/
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009

Merci pour l'info !!!

Mais je vois pas bien comment l'utiliser !!!
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009

Parfait, ça marche !

Merci beaucoup !!
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
Parfait :-)

Sinon petite question pour satisfaire ma curiosité : pourquoi ce choix de MySQLDriverCS ?

/*
coq
MVP Visual C#
*/
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009

En cherchant de la doc sur la liaison C# et MySQL, tu suis tombé quasiment que sur MySQLDriverCS !!

tu me conseillerais de prendre plutôt le connecteur .Net de MySQL ?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
98
A priori oui : il est maintenu par l'éditeur, alors que MySQLDriverCS m'a l'air relativement.
Sinon durant tes recherches, tu as dû entendre parler du connecteur officiel sous son ancienne dénomination : ByteFx (projet externe reprit en interne par MySQL AB).

/*
coq
MVP Visual C#
*/
Messages postés
57
Date d'inscription
mercredi 26 février 2003
Statut
Membre
Dernière intervention
6 juillet 2009

Je vais regarder ce connecteur !!

Encore merci !
Messages postés
213
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
1 avril 2009

merçi beaucoup mec!!!!!!!!!!
Messages postés
213
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
1 avril 2009

bonjour, le mien n'est pas une application console, mais quant je modifie ca marche sauf que avec mes combobox je suis obligé de modifier leur paramètres  sinon mon programme refuse de se lancer pourtant modifier les paramètres  de mon combobox ne m'arrange pas parce que je dois defiler toute la liste de mon combobox ce qui est très difficile quant on veut cherche un element dont on connait le nom
aidez moi