在.NET中,当我在另一个线程中运行表单时,如何设置STAThread?

Cor*_*ger 0 asp.net com multithreading

我在第二个帖子中运行一个表单.如果我执行Ctrl-C复制剪贴板上的文本,我会得到一个异常,"在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)."(使用剪贴板显然涉及OLE)​​.

把[STAThread]我的线程PROC,这是我的第二个线程没有的切入点工作.什么会奏效?

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

Jon*_*eet 7

创建线程时,请在SetApartmentState()启动之前调用该方法.你不能为线程池线程做这个.

例如:

Thread thread = new Thread(threadAction);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
Run Code Online (Sandbox Code Playgroud)