2009-04-28 26 views
0

我正在第二个线程中运行窗体。如果我按Ctrl-C复制剪贴板上的文本,我会得到一个异常,“当前的线程必须设置为单线程单元(STA)才能进行OLE调用(使用剪贴板明显涉及OLE)​​,当我在其他线程中运行表单时,如何设置STAThread?

你之前把[STAThread]我的线程PROC,这是我的第二个线程的入口点也的工作。什么工作?

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

回答

7

当您创建线程,调用SetApartmentState()方法启动它,你不能为线程池线程做这个。

例如:

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

它工作。谢谢。 – 2009-04-28 16:31:49

相关问题