2009-04-28 7 views
0

Je cours un formulaire dans un deuxième fil. Si je fais Ctrl-C pour copier du texte dans le presse-papiers, j'obtiens une Exception, "Le thread actuel doit être défini sur un seul STA avant que les appels OLE puissent être faits (l'utilisation du presse-papiers implique apparemment OLE)dans .NET, Comment définir STAThread lorsque j'exécute un formulaire dans un thread supplémentaire?

Mettre le [STAThread] avec mon fils proc, qui est le point d'entrée de mon deuxième fils ne pas travail. Qu'est-ce qui fonctionne?

[STAThread] 
private void MyFormThreadproc(object o) 
{ 
    form = new MyForm(); 
    Application.Run(form); 
} 

Répondre

7

Lorsque vous créez le fil, appelez la méthode SetApartmentState() avant Vous ne pouvez pas le faire pour les threads de pool de threads

Par exemple:

Thread thread = new Thread(threadAction); 
thread.SetApartmentState(ApartmentState.STA); 
thread.Start(); 
+0

Cela a fonctionné. Merci. –

Questions connexes