2010-06-11 96 views
0

我想在主窗體運行時在窗體中顯示處理圖像。如何在我的主窗體中顯示處理窗體

我已經創建了處理表單。

ProcessingForm obj = new ProcessingForm(); 

obj.show(); 

DOSomeStuff(); 

obj.close(); 

試了一下它顯示處理form..but一段時間就變成沒有響應......或者我的GIF圖像動畫停止。

怎麼做?

+0

這不能工作。您必須使用BackgroundWorker來防止凍結您的UI線程。 *許多*關於它在這個網站上的線程。 – 2010-06-11 14:05:45

回答

0

您可以使用BackgroundWorker類來分離表單消息處理和處理您的代碼如DoSomeStuff()的代碼。如果你想知道你的DoSomeStuff()已經完成了什麼進程,你可以在你的後臺工作者中實現,因爲這個類支持它。

但如果你的環境是放緩至獲得實時此兩件事情的處理,你必須給你的BackgroundWorker的一些優先級最低那麼你的圖像可以實時工作,但你的東西做得更長。 這不是很好的解決方案,因爲取決於環境。

0

我從CodeProject使用this code。這是一個類似於Firefox使用的「旋轉」計時器動畫。

添加DLL作爲項目的引用,並刪除您的窗體上的進度指示器。

設置它的初始狀態是不可見的。

然後,當你想展示你的處理來電:

this.progressIndicator.Visible = true; 
this.progressIndicator.Start(); 

要刪除它時,處理完成呼叫:

this.progressIndicator.Stop(); 
this.progressIndicator.Visible = false; 

它採用了System.Windows.Forms.Timer控制動畫,並覆蓋OnPaint方法來繪製旋轉的圖像。這可能和你需要的一樣準確。

我不是作家,但我已經使用這個並沒有與它減慢實際過程明顯下降的任何問題。

但是,你必須把你的處理到另一個線程 - 使用BackgroundWorker類,否則UI將不會更新。

+0

這也不起作用,因爲OP的ProcessingForm不起作用。當UI線程不泵送消息循環時沒有Tick事件。 – 2010-06-11 14:02:37

相關問題