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的创建和使用的窗口,这对单个线程的亲和性。

控制台不使用窗口,它只是输出/回复字符串。

它是“窗口开发的设计”。

相关问题