В моем приложении формы windows я вызываю из основной формы MDIContainer класс, в котором я вызываю открытие дочерней формы.
В основной форме:
private void btnTemplate_ItemClick(object sender, ItemClickEventArgs e)
{
beiProgressBar.EditValue = "Form opening in progress...";
repositoryItemMarqueeProgressBar1.ShowTitle = true;
beiProgressBar.Visibility = BarItemVisibility.Always;
bwTemplate.RunWorkerAsync();
}
private void bwTemplate_DoWork(object sender, DoWorkEventArgs e)
{
FrmTemplate frm;
frm = new FrmTemplate();
Callback.SetFormTemplate(this, ref frm);
}
В классе Callback я показываю дочернюю форму:
public delegate void SetFormTemplateCallback(FrmMain pFormMain, ref FrmTemplate pForm);
public static void SetFormTemplate(FrmMain pFormMain, ref FrmTemplate pForm)
{
if (pFormMain.InvokeRequired)
{
SetFormTemplateCallback d = new SetFormTemplateCallback(SetFormTemplate);
pFormMain.Invoke(d, new object[] { pFormMain, pForm });
}
else
{
pForm.MdiParent = pFormMain;
pForm.InitForm();
pForm.Show();
}
}
Эта операция случайным образом приводит к зависанию моего приложения.
Я также пробовал использовать BeginInvoke, но проблема все еще существует.
Я заметил, что часто приложение зависает, когда оно свернуто.
Трудно еще и отладить эту ошибку.
Кто-нибудь когда-нибудь достигал подобного поведения?