2011-01-14 58 views
1

我有一個窗體上有2個控件。控件1有幾個搜索條件,用戶可以點擊一個按鈕來開始搜索。 Control 2有一個GridView,它將顯示搜索結果,並且還有一個帶有動畫Gif的PictureBox。防止WinForms PictureBox動畫GIF在處理過程中暫停?

控件1有一個方法,它有一個嵌套的foreach循環,花費5分鐘以上來完成(取決於搜索條件,有時它幾乎立即完成)。

發生什麼事是我調用控件2上的方法,使PictureBox可見並且動畫Gif開始運行。只要需要一段時間的foreach循環,圖像就會完全停止。每當我顯示任何消息框時,圖像又開始運行(我認爲這是因爲MessageBox被阻塞)。只要MessageBox關閉,圖像停止動畫。我想我需要利用線程的東西,但我所嘗試的所有東西(ImageAnimator,線程調用一個調用Invoke的方法等)都似乎不起作用。任何暗示什麼事件/圖書館,我需要合作,以使這項工作?任何好的示例要遵循?

回答

8

您長時間運行的代碼在GUI線程中運行並阻止內部消息循環,所以任何GUI都停止。嘗試在單獨的工作線程中運行長時間運行的代碼。

+0

切換周圍的邏輯工作完美。我沒有考慮將阻塞代碼放入其自己的線程中,而將PictureBox繪圖放入線程中。 – Brandon 2011-01-14 18:21:57