1

Есть форма, открытая в новом потоке, а так же метод, содержимое которого тоже выполняется в новом потоке.

По окончании действия метода (там находится цикл) нужно отобразить другую форму (она является реализацией кастомного messagebox-а) и закрыть текущую форму.

Я пытаюсь сделать так:

else if (ex.Message.Contains("Unknown"))
{
      try
      {
           Invoke(new Action(() => this.Close()));
      }
      catch
      {

      }
      FlatMessageBox.ShowBox("К сожалению, Вы не можете добавлять больше друзей за один день. Пожалуйста, попробуйте завтра.");
      break;

}

И этот код работает, но не так, как мне хотелось бы. Без try-catch я получаю ошибку "Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна".

Так же, если не сделать break, форма с сообщением открывается несколько раз.

Нужна правильная реализация, что то вроде:

this.Close;
FlatMessageBox.ShowBox("лалала");

Такой код работал до того, как я начал вызывать форму и её методы в отдельных потоках.

Behavior
  • 149

0 Answers0