我有一个程序集,该程序集在第三方的沙箱中的STA线程下运行,在该线程中,我创建了一个双工WCF客户端,该客户端需要在原始STA线程上执行方法。
当前的实现工作正常,在Duplex回调中,我按如下方式获取STA线程的同步上下文,并将其用于发回STA线程:
expect(page).to have_selector('.modal.in')
expect(page).to have_no_selector('.modal.in')
所有这些都在STA线程中初始化的WinForm中运行,太好了……但是我需要移动WCF双工代理,以便它可以在主STA线程中的类实例下运行。当我删除winform时,我最终从上述SynchronizationContext中获得了一个全新的线程。
要澄清:
Winforms:
没有WinForm(类实例):-
在线程11而不是1上执行意味着我的方法无法在沙箱中正确执行,除了在Winform下运行之外,变量之间的代码没有区别。有谁知道我如何在不使用winform的情况下保持STA主线程中双工回调方法的执行?