2009-04-28 10 views
0

Ich führe ein Formular in einem zweiten Thread. Wenn ich Ctrl-C zum Kopieren von Text in die Zwischenablage verwende, erhalte ich eine Exception: "Aktueller Thread muss auf ein einzelnes Thread-Apartment (STA) gesetzt werden, bevor OLE-Aufrufe ausgeführt werden können. (Die Verwendung der Zwischenablage ist offensichtlich OLE.)in .NET, wie setze ich STAThread, wenn ich ein Formular in einem zusätzlichen Thread ausführen?

Inbetriebnahme des [STAThread] mit meinem Thread proc, die der Eintrittspunkt meines zweiten Thread ist nicht NICHT Arbeit. Was funktioniert?

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

Antwort

7

Wenn Sie den Thread erstellen, rufen Sie die SetApartmentState() Methode, bevor Sie Starten Sie das. Sie können dies nicht für Threadpool-Threads tun.

Zum Beispiel:

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

Es hat funktioniert. Vielen Dank. –

Verwandte Themen