Winforms: Un objet COM a besoin d'un STAThread, l'autre a besoin d'un MTAThread. Comment puis-je les utiliser?

StackOverflow https://stackoverflow.com/questions/1521816

Question

Je suis en train de construire une application WinForms avec deux composants COM. Cependant, l'un des composants ne fonctionne que lorsque vous utilisez [MTAThread] et l'autre ne fonctionne qu'avec [STAThread].

Quelle serait la solution recommandée est?

Était-ce utile?

La solution

formes Windows nécessite [STAThread] pour être présent sur son principal point d'entrée. Elle ne fonctionnera que dans l'état appartement fileté unique. Vous pouvez utiliser votre objet STA COM sur le thread d'interface utilisateur dans Windows Forms, sans problème.

L'approche typique est de créer votre propre fil, et régler Thread.ApartmentState pour MTA (bien que ce soit la valeur par défaut) pour le thread séparé. Initialiser et utiliser vos composants COM MTA-thread à partir de ce fil.

ThreadStart threadEntryPoint = ...;

var thread = new Thread(threadEntryPoint);
thread.ApartmentState = ApartmentState.MTA;  // set this before you call Start()!
thread.Start();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top