2010-05-31 89 views
0

在一段可能需要几秒钟才能完成的C#代码的开始部分,我想显示一个非模态窗体,其中只有一个标签,上面写着“Please wait ...”非模态“状态”形式

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没有完全显示。所以我只看到表格的框架。在德尔福(我的老脚跺脚),我会在Show()之后调用Application.ProcessMessages在C#中是否有等价物?在这种情况下可以使用罐装“状态”表单吗?有没有更好的方法来解决这个问题?

在此先感谢。 David Jennings

回答

1

我同意“其他线程”的建议,但对于简单和短的目的Application.DoEvents()会做。

5

哟需要在不同的线程中运行do stuff部分。
然后将所有myWaitForm.Show()
看看BackgroundWorkerhere

+0

非常感谢。我从来没有看过BackgroundWorker。看起来它简化了多线程处理。对于这种特殊情况可能不是最好的。但我一定会在同一个应用程序中使用它。 – 2010-06-02 13:44:38

1

你最好把你的“do stuff”代码移到其他线程。 并使用Application.DoEvents()来处理表单消息