可能重複:
C# WinForm Application - UI Hangs during Long-Running OperationWindows窗體應用程序 - 慢速/不響應的UI
我使用C#和.NET Framework 4.0中創建一個Windows窗體應用程序。我遇到了一個問題,在程序正在工作的時候,我無法在窗口四處移動,如果我最小化了它,我無法讓它回來。我認爲這是因爲我在UI上運行的同一線程上工作。
這可能是原因嗎?如果是的話,我該如何解決它?
可能重複:
C# WinForm Application - UI Hangs during Long-Running OperationWindows窗體應用程序 - 慢速/不響應的UI
我使用C#和.NET Framework 4.0中創建一個Windows窗體應用程序。我遇到了一個問題,在程序正在工作的時候,我無法在窗口四處移動,如果我最小化了它,我無法讓它回來。我認爲這是因爲我在UI上運行的同一線程上工作。
這可能是原因嗎?如果是的話,我該如何解決它?
如果你不想要進入線程的內部和線程,我會建議使用BackgroundWorker控件來完成您的任務。後臺工作人員控制在後臺封裝了大量線程工具,爲您提供乾淨的編程接口。
以下鏈接可以幫助你(我寫的)
嘗試在編寫代碼:
System.Threading.Tasks.Task.Factory.StartNew(new Action(() =>
{
//your code goes here
}));
因爲沒有任務,你的代碼和用戶界面上同一個線程中運行時,它會導致緩慢起伏
我應該使用任務還是BackgroundWorker類? – 2012-07-11 04:24:04
@StickFigs看到這個MSDN論壇[鏈接](http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/75bb20d8-a3a0-4500-b03f-c81ce6bd4f31)基本上,如果你需要更新UI使用Background Worker否則使用System.Threading命名空間 – 2012-07-11 04:29:46
我在WPF中遇到了同樣的問題,並使用任務解決它。我從來沒有使用BackroundWorker,所以我不能就此提出建議。但我使用Dispathcer.Invoke()更新UI元素。但我不知道這是否合適 – 2012-07-11 04:34:14
這取決於工作是什麼。但你可以嘗試使用[Background Worker Class](http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx) – 2012-07-11 04:13:49
@MarkHall它主要是上傳文件到服務器 – 2012-07-11 04:20:51
我覺得這個問題每天都會被問到......我們可以開始正確地將這些問題作爲重複項目來處理嗎 – roken 2012-07-11 13:01:50