composants COM monothreads ont une exigence difficile que vous c les réattribuer sur un thread STA. Que vous créez en utilisant l'attribut [STAThread] sur votre méthode Main() et en pompant une boucle de message. Tels que celui créé par Application.Run().
Vous pouvez désormais appeler un tel composant à partir d'un thread de travail ou d'un rappel de temporisateur. COM s'assure que l'exigence single-thread pour le composant est satisfaite et marshals qui appellent au thread STA. Pour vaincre ce que vous essayiez d'accomplir, tous les appels au composant s'exécutent sur un seul thread. Vous allez le rendre plus lent, pas plus rapide. Marshaling l'appel est pas rapide.
Il n'y a pas de sauce secrète ici, vous ne pouvez pas transformer magiquement un composant qui a explicitement déclaré qu'il ne supporte pas le filetage dans un composant fileté. Il n'est pas non plus rare que la grande majorité des composants COM, ou d'ailleurs des composants .NET, ne prennent pas en charge le thread. La différence entre les composants COM et .NET est que COM fait quelque chose à ce sujet. Un composant .NET ne fonctionne généralement que sur un type de course de thread sans diagnostic.