我寫了一個函數,它執行了大量的數學運算,大約需要10分鐘才能完成它的工作。我試圖通過窗體上的按鈕(Windows窗體應用程序)調用此函數。但現在的問題是在10分鐘內,主要形式停止響應,直到功能完成其工作。主窗體停止響應
我該如何解決這個......任何想法!
我寫了一個函數,它執行了大量的數學運算,大約需要10分鐘才能完成它的工作。我試圖通過窗體上的按鈕(Windows窗體應用程序)調用此函數。但現在的問題是在10分鐘內,主要形式停止響應,直到功能完成其工作。主窗體停止響應
我該如何解決這個......任何想法!
您可以分配用於計算一個新的線程,這樣的形式就不必等待計算完成,繼續執行(即傾聽和響應事件等等)前面已經提到,你應該
問題是,當您的10分鐘功能正在工作時,程序的其餘部分不會執行。特別是,它不能執行渲染。 (即讓您的表單迴應)。
解決方法是使用threads。
將長時間運行的任務分配給工作線程或線程池線程。
請記住,線程池線程數量有限。 Windows窗體也不是線程安全的,因此您不應該直接從創建的線程更新窗體。你可以使用InvokeRequired。
在這種情況下最好使用BackgroundWorker類。詳情請點擊以下鏈接。
http://stuff.seans.com/2009/05/21/net-basics-do-work-in-background-thread-to-keep-gui-responsive/