C# Вызов дочерней формы зависает случайным образом - PullRequest
0 голосов
/ 18 июня 2020

В моем приложении формы 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, но проблема все еще существует.

Я заметил, что часто приложение зависает, когда оно свернуто.

Трудно еще и отладить эту ошибку.

Кто-нибудь когда-нибудь достигал подобного поведения?

...