Я хочу скрыть главное окно во время работы фонового работника, но когда я устанавливаю основную форму как this.Hide()
до backgroundworker.RunWorkerAsync()
, оба ProgressChanged
и RunWorkerCompleted
не запускаются. Как мне этого добиться? спасибо.
Еще код:
ProgressChanged
и RunWorkerCompleted
ведут огонь с:
private void button1_Click(object sender, EventArgs e)
{
backgroundworker.RunWorkerAsync();
}
ProgressChanged
и RunWorkerCompleted
не стреляют с:
private void button1_Click(object sender, EventArgs e)
{
this.Hide();
backgroundworker.RunWorkerAsync();
}
Извините: Больше информации:
Форма используется в общей (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();
}
Как я могу поместить графический интерфейс в новый поток и при этом сохранить фоновые события в графическом интерфейсе?