2010-05-31 78 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()來處理表單消息