回答
使用另一個線程。
Thread t = new Thread(new ThreadStart(() => {
IntensiveCalculationCode();
}));
t.Start();
您還可以通過調用調度程序從線程內調用UI線程。儘管它們在Windows窗體和WPF上並不完全相同。
我正在使用WPF有什麼不同?在Windows窗體上的 – user1430430
我不記得確切,但在WPF中調用調度器,像'Dispatcher.Invoke(()=> {CodeThatModifiesUIElementsSuchAsChangingTextboxText();});' –
使用BackgroundWorker對象。您可以使用ReportProgress和ProgressChanged事件通知用戶操作的進度。
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// .. stuff that takes long
backgroundWorker1.ReportProgress(10);
// .. stuff that takes long
backgroundWorker1.ReportProgress(20);
// .. stuff that takes long
backgroundWorker1.ReportProgress(100);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Done !
}
太棒了!謝謝你! – user1430430
- 1. 跨線程錯誤/無響應的UI
- 2. WCF線程 - 無響應的UI
- 3. 保持UI線程響應?
- 4. 使用線程時UI不響應
- 5. Qt的線程停止UI的響應
- 6. 保持PyQt UI響應線程
- 7. 黑莓 - 線程無響應
- 8. Android Surfaceview線程無響應
- 9. 線程C#UI
- 10. JavaFX線程使UI無響應,任何替代方法[線程延遲]
- 11. BackgroundWorker_DoWork導致UI無響應?
- 12. RestKit使UI無響應
- 13. Winforms UI無響應查詢
- 14. 非ui線程可以阻塞ui線程嗎?導致它凍結並變得無法響應?
- 15. C#從UI線程操縱線程
- 16. 多線程COMObject和UI線程(C#)
- 17. 多線程:C#程序運行C DLL - 不響應C#
- 18. Python線程隊列和無響應線程
- 19. Realm Android:Async Transaction影響UI線程
- 20. Android:發佈消息給HandlerThread會導致UI線程無響應或給出IllegalStateException
- 21. C++異步使程序無響應
- 22. JavaFX應用程序UI響應
- 23. WPF應用程序的響應UI
- 24. WpF應用程序的響應UI
- 25. SOAP UI響應
- 26. 爲響應式UI啓動服務的新線程
- 27. Java線程如何讓UI更具響應性?
- 28. ResourcesNotFoundException:字符串資源ID#0x0(沒有響應:UI線程)
- 29. SWT UI線程沒有響應 - 打印錯誤
- 30. Android:使用多線程使UI響應(實現平滑滾動)
在另一個線程中啓動您的任務。你使用哪個UI? WinForms或WPF? – opewix
使用backgroundworker來完成在單獨的線程上花費時間的內容,以便UI線程不會掛起。 –