我有一個託管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