2013-01-20 31 views
1

由於VB6我很少在C#中使用方法DoEvents()。正確使用與WPF兼容的DoEvents()

我現在需要使用相同的功能相同的目的

我注意到,人們使用此功能(Application.DoEvents Method):

Application.DoEvents() 

但這適合Windows窗體。

現在我正在使用WPF。

WPF中是否有類似的方法?

或者我不應該再使用這種方法?

謝謝。

+1

你是什麼意思的「fo相同的目的(不適用於UI)「。鑑於Application.DoEvents *的全部重點*是處理未完成的UI事件,您想用它做什麼? –

+0

我的錯誤。畢竟它是關於UI的。通過閱讀你的答案,我意識到它不再有用。謝謝 – Guy

回答

5

或者我可能不應該再用這個方法了?

這個。

基本上,使用Application.DoEvents()幾乎總是你有哪些應該在不同的線程中執行,回調到需要訪問的用戶界面UI線程長時間運行任務的指示。

Application.DoEvents()基本上是一個黑客使用時,他們不想花時間做正確的事情 - 至少在絕大多數情況下。

根據您正在使用的語言/框架的版本以及長期運行任務的組成,可以採用多種方式編寫與UI交互的長時間運行的任務。選項考慮:

  • 顯式使用線程池
  • 使用BackgroundWorker
  • 使用任務並行庫(TPL)顯式地創建一個新的線程
  • - 需要.NET 4+
  • 使用異步APIs,這是更簡單的.NET 4.5/C#5