我想在背景工作正常的时候隐藏主窗口,但是当我在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