我在我的应用程序一些长期的过程,所以我创建了一个WAIT PLEASE形成我呼吁另一个线程这样的:“请等待”的形式隐藏的主要形式
public void ShowWait()
{
continueWait = true;
ThreadPool.QueueUserWorkItem((x) =>
{
using (frmWait espera = new frmWait())
{
espera.ShowInTaskbar = false;
espera.Show();
while (continueWait)
Application.DoEvents();
espera.Close();
}
});
}
,并关闭形式我使用:
public void HideWait()
{
continueWait = false;
}
它工作正常,但我有一个问题,显示等待窗体时,主窗体损失的焦点,并在同一时间任何其他应用程序中运行(的Excel,Word等)去到顶部和我的应用程序去所有应用程序的后面。我尝试使用Activate()和Focus(),但只有任务栏上的框架才会激活,但该应用仍保留在所有应用程序的背面。
对此有何看法?
在此先感谢
我强烈建议你用'HideWait'方法发出的等待句柄(比如'ManualResetEvent')替换你的while循环。这样你就不会使用任何不必要的CPU资源。 – 2010-02-09 14:04:11
当我使用手动或自动重置事件时,应用程序挂起,等待表单不显示等待动画,整个应用程序等待信号。 – Argons 2010-02-09 14:40:13
已经在这里解决了这个问题几次...看看:1. http://stackoverflow.com/questions/2183520/backgroundworkers-never-stop-being-busy/2183963#2183963 2. http:// stackoverflow.com/questions/2152445/displaying-please-wait-message/2153082#2153082 – Oliver 2010-02-09 15:42:36