在一段可能需要几秒钟才能完成的C#代码的开头,我想显示一个带有标签的非模态表单,上面写着“请稍候......”
WaitForm myWaitForm = null;
try
{
// if conditions suggest process will take awhile
myWaitForm = new WaitForm();
myWaitForm.Show();
// do stuff
}
finally
{
if (myWaitForm != null)
{
myWaitForm.Hide();
myWaitForm.Dispose();
myWaitForm = null;
}
}
问题:在其余代码占用线程之前,WaitForm没有完全显示。所以我只看到表格的框架。在Delphi(我的旧st脚)中,我会在Show()之后调用Application.ProcessMessages在C#中是否有等价物?我可以在这样的情况下使用罐装“状态”表格吗?有没有更好的方法来解决这个问题?
提前致谢。 大卫詹宁斯
答案 0 :(得分:5)
你需要在另一个主题中运行do stuff部分
然后全部myWaitForm.Show()
请查看BackgroundWorker
课程here
答案 1 :(得分:1)
您最好将“do stuff”代码移动到其他线程。 并使用Application.DoEvents()处理表单消息
答案 2 :(得分:1)
我同意“其他线程”的建议,但出于简单和简短的目的,Application.DoEvents()将会这样做。
答案 3 :(得分:0)
您正在寻找的术语是“闪屏”。
以下是一些相关评论。 https://stackoverflow.com/search?q=splash+screen+c%23