我有一个托管WCF服务(了NamedPipes)一个WinForm应用程序。在接电话时,一个事件将被触发,然后一个表格将被创建并打开。问题是,我得到的跟随着例外
ActiveX control '8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment.
当的WinForms InitializeComponent方法创建一个System.Windows.Forms.WebBrowser?
我认为另一个线程正在运行even(工作线程),我怎样才能让主线程运行事件?
我没有任何打开的winform,所以我不能使用InvokeRequired。
BestRegards
EDIT1:普莱斯不,我使用
[STAThread]
public static void Main(string[] args)
{
Application.Run(_instance);
}
但是,如果我在当前线程池线程上创建窗体或控件,winform是否不会绑定到此线程?我听说创建窗体/控件的线程必须是更新窗体/控件的线程?或者当创建新的表单/控件并执行工作时,主UI线程会进入吗?你能否提供一个小例子? – Banshee
@SnowJim:我更新了我的答案。你将不得不手动创建一个UI线程。 –
谢谢,但如果应用程序在主UI线程上运行其他部分(使用Application.Run),这将会很奇怪。我可不能简单地将当前的UI线程在启动时存储在属性中,然后使用此线程触发事件? – Banshee