0

我在學習多線程(以及相關的東西,如併發性,TPL-- .NET,Windows),並希望對這個問題的答案能夠顯着減少我的疑惑。爲什麼輸出(從多個線程)到WPF UI需要調度程序,而控制檯卻不需要?

爲什麼WPF UI需要通過Dispatcher輸出(來自多個線程),而控制檯卻不需要?
我希望這個解釋稍微詳細一些,然後在MSDN docs中使用the overused and underdefined這個短語Console class is thread-safe(或者更好地避免使用含糊不清的術語)。

更新:
感謝賈斯汀Pihony的評論,子問題:
Why reading from WPF UI is not possible without a Dispatcher object而Windows窗體允許讀取和寫入,而不調用/ BeginInvoke的?
爲什麼(或如何)讀取會危害WPF UI的線程安全性?

我試圖消除歧義,我從Parallel Programming in .NET Framework 4: Getting Started短語:

「我沒有與控制檯應用程序問題,因爲 Console類是線程安全的,但在WPF中,UI組件即可。安全 由專門的UI線程」

建議主題只訪問讀取答案:

+1

你嘗試查找什麼? http://stackoverflow.com/questions/10450750/can-you-access-ui-elements-from-another-thread-get-not-set Brian的答案應該足夠你想要的 –

+0

如果你相信「線程安全的「含糊不清,你有更多的閱讀要做。 –

+1

鏈接的SO問題指出爲什麼WPF UI具有該線程模型。控制檯的選擇是觸及這一個:http://stackoverflow.com/questions/1079980/calling-console-writeline-from-multiple-threads –

回答

0

WPF/WinForm的創建和使用的窗口,這對單個線程的親和性。

控制檯不使用窗口,它只是輸出/回覆字符串。

它是「窗口開發的設計」。

相關問題