我在我的應用程序一些長期的過程,所以我創建了一個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