我正在尝试使用 WCF 来测试我的程序。我遇到的问题是当我通过 WCF 调用方法时,它们在工作线程上运行。我尝试测试的方法需要在 UI 线程中运行,否则会出现以下错误:
DragDrop 注册没有成功。当前线程必须设置为单线程单元 STA 模式,然后才能进行 OLE 调用。确保您的 main 函数上标记了 STAThreadAttribute。
我的程序中的主要功能具有 STAThread 属性。通过在我的方法中执行以下操作,我能够让它工作。
public void MyMethod(){
if (InvokeRequired) {
Invoke(new MethodInvoker(MyMethod));
return;
}
//Do stuff
}
我不想对程序中的每个方法都进行此更改。有没有办法让 WCF 每次都在 UI 线程上运行方法?