2009-12-04 11 views
2

Comme le sujet est explicite, j'ai besoin d'aide.Le contrôle ActiveX ne peut pas être instancié car le thread actuel n'est pas dans un appartement à un seul thread.

J'écris un petit outil qui affiche un écran de démarrage au démarrage. L'écran de démarrage est un formulaire. Quand il y avait seulement un contrôle de bouton dessus cela fonctionnait bien. Mais lorsque je l'ai supprimé et placé un contrôle WebBrowser dessus, il renvoie l'exception ci-dessus.

Merci d'avance.

Répondre

1

Utilisez-vous WinForms? Si oui, essayez de placer la [STAThread] attribut dans la partie supérieure de votre définition de classe et de voir ce qui se passe:

espace de noms

WindowsFormsApplication1 { [STAThread] public partial class Form1: Formulaire {

+0

il dit que je peux utiliser cet attribut uniquement avec les définitions de la méthode, pas les déclarations de classe – Emre

+0

Mon erreur. Son réellement appliqué à la fonction principale de votre classe d'application – kmontgom

+0

Que faire si vous faites le filetage dans votre programme, j'ai dû changer comme suit: // doit changer cela pour le filetage pour éviter l'erreur: // "waitall pour plusieurs poignées sur un Le thread sta n'est pas pris en charge "[MTAThread()] pour utiliser cette instruction: ThreadPool.QueueUserWorkItem (webSvc.ThreadPoolCallback, i); – NealWalters

Questions connexes