Hi, I want to hide the main window while the backgroundworker is working, but When I set the main form as this.Hide()
before the backgroundworker.RunWorkerAsync()
, Both ProgressChanged
and RunWorkerCompleted
are not firing. How can I achieve this? thanks.
More code:
ProgressChanged
and RunWorkerCompleted
are firing with:
private void button1_Click(object sender, EventArgs e)
{
backgroundworker.RunWorkerAsync();
}
ProgressChanged
and RunWorkerCompleted
are not firing with:
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
backgroundworker.RunWorkerAsync();
}
Sorry: More information: The form is used in a shared (COM) Outlook add-in.
In outlook there is a button, click this button to load the form, the problem happens when I show my form in a new thread like this:
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();
}
If I just load the form, no problem:
private void MyButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
{
showwindow();
}
private void showwindow()
{
GUIForm = new MyForm();
GUIForm.ShowDialog();
}
How can I put the GUI in a new thread and still have my backgroundwork events within the GUI?