Форма иногда не скрывается, несмотря на то, что она находится в блоке - PullRequest
0 голосов
/ 20 марта 2012

В моем приложении winform у меня есть форма для отображения сообщения «Пожалуйста, подождите ...» вместе с индикатором выполнения или некоторым текстом. Из соображений производительности форма является синглтоном, который открывается с помощью BringToFront (), Show () и Refresh () и закрывается с помощью Hide ().

Я использую шаблон try ... finally, чтобы отобразить и скрыть эту форму.

try
{
WaitForm.Display();
// Some code
}
finally
{
WaitForm.Hide();
}

В некоторых редких случаях пользователи сообщали, что форма не закрывалась. Можете ли вы вспомнить причину, по которой форма не закроется? Пользовательский интерфейс отзывчив, когда это происходит.

1 Ответ

1 голос
/ 20 марта 2012

Как правило, в приложении Windows для любого обновления пользовательского интерфейса должен выполняться его основной цикл сообщений.Так что в вашем случае, если после этого блока кода происходит какой-либо жесткий цикл / обработка, форма может не сразу скрыться.

Возможно, вы можете создать поток пользовательского интерфейса после блока кода, чтобы пользовательский интерфейс мог обновляться.Например,

try
{
  WaitForm.Display();
  // Some code
}
finally
{
  WaitForm.Hide();
  Application.DoEvents();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...