在我的winform应用程序中,我有一个表单,用于显示“请稍候...”消息以及进度条或一些文本。出于性能原因,Form是一个单例,它使用BringToFront(),Show()和Refresh()打开,并使用Hide()关闭。
我正在使用try ... finally模式显示此表单并隐藏它。
try
{
WaitForm.Display();
// Some code
}
finally
{
WaitForm.Hide();
}
在极少数情况下,用户报告该表单未关闭。你能想出为什么表格不会关闭的原因吗?发生这种情况时,用户界面会响应。
答案 0 :(得分:1)
通常,在Windows应用程序中,对于任何UI刷新,都需要运行其主消息循环。因此,在您的情况下,如果在此代码块之后发生任何严格的循环/处理,则表单可能不会立即隐藏。
也许,您可以在代码块之后生成UI线程,以便UI可以刷新。例如,
try
{
WaitForm.Display();
// Some code
}
finally
{
WaitForm.Hide();
Application.DoEvents();
}