Bonjour a tous,

J'ai l'erreur suivante lorsque j'execute mon projet:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Excepción no controlada del tipo 'System.Threading.ThreadStateException' en system.windows.forms.dll
 
Información adicional: No se puede crear una instancia del control ActiveX '9bd6a64b-ce75-11d1-af04-204c4f4f5020' porque el subproceso actual no está en un apartamento de un solo subproceso.
Traduction approx. => Exception non controle du type: 'System.Threading.ThreadStateException' dans system.windows.forms.dll
Information aditionel: Impossible de creer une instance du controle ActiveX -...- parceque le subprocess actuel n est pas dans un apartement d un subprocess unique.
Je m explique: j ai un windows form, qui instancie un composant ActiveX - c est a ce moment que l exception est lancee.

D apres l erreur, et la doc, il est precise qu un composant ActiveX peut seulement etre lance dans un appartement State STA, or le formulaire se lance de la maniere suivante:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
//	if(System::Threading::Thread::CurrentThread->ApartmentState == System::Threading::ApartmentState::MTA) {
//		return -1;
//	}
	Application::Run(new Form1());
	return 0;
}
Or lorsque j execute L appartment State contient MTA!!!

Pas cool! Et bien entendue imposible de modifier l-appartement state lorsqu il a deja ete initialise

D autre part j ustilise un certain nombre de librairie. Je pense que le probleme doit venir du fait que mes librairies se charge d initialiser mon apartement state avec un qui soit compatible.

Comment faire pour initialiser un apartement State STA avant qu il ne le soit automatiquement, tout en utilisant mes librairies.

Merci d avance