我想在背景工作正常的時候隱藏主窗口,但是當我在backgroundworker.RunWorkerAsync()
之前將主窗體設置爲this.Hide()
時,ProgressChanged
和RunWorkerCompleted
都沒有觸發。我怎樣才能做到這一點?謝謝。在STA線程中:Form.Hide()= BackgroundWorker事件不會觸發?
更多代碼: ProgressChanged
和RunWorkerCompleted
與擊發:
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
backgroundworker.RunWorkerAsync();
}
對不起:更多信息:
private void button1_Click(object sender, EventArgs e)
{
backgroundworker.RunWorkerAsync();
}
ProgressChanged
和RunWorkerCompleted
不與擊發 的形式在共享使用(COM)Outlook加載項。
在Outlook中有一個按鈕,點擊這個按鈕加載形式,在問題發生時,我告訴我的形式在一個新的線程這樣的:
private void MyButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
{
System.Threading.Thread tt = new System.Threading.Thread(new System.Threading.ThreadStart(showwindow));
tt.SetApartmentState(System.Threading.ApartmentState.STA);
tt.Start();
}
private void showwindow()
{
GUIForm = new MyForm();
GUIForm.ShowDialog();
}
如果我只是加載的形式,沒有問題:
private void MyButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
{
showwindow();
}
private void showwindow()
{
GUIForm = new MyForm();
GUIForm.ShowDialog();
}
如何將GUI置於新線程中,並且仍然在GUI中有我的背景事件?
你能發佈後臺工作者代碼和事件處理程序代碼嗎?如果長時間嘗試將其降低到重複出現問題的最小代碼。 – ChrisF 2010-06-21 10:52:29
請看我編輯的帖子,謝謝。 – Bolu 2010-06-21 11:28:24