我读到的每篇文章都讨论过SynchronizationContext如何处理表单的控件。 这是SynchronizationContext的唯一目的吗?
我还要问一个基本的问题:为什么我只是对每个控件执行锁定,如果UI线程使用它我使用它?为什么我需要所有这些“SynchronizationContext”与控件进行通信?我的意思是,这不是一个更好的沟通控制方式吗? (我知道它不会工作)。
文章:
http://reedcopsey.com/2010/03/18/parallelism-in-net-part-15-making-tasks-run-the-taskscheduler/
...
答案 0 :(得分:0)
SynchronizationContext可用于在任何其他线程的上下文中执行工作。
这里有一个主要的警告:另一个线程需要为此做好准备,例如: G。通过使用消息泵,像WinForm和WPF中的UI线程一样。此外,这些UI线程始终具有SynchronizationContext,而其他线程类型通常不会。
至于锁定作为替代方案,在Microsoft类中需要完全不同的设计。它可能是有可能的,但是在等待时也可能导致线程长时间阻塞。我认为它会为滥用提供很多可能性。
This article on codeproject非常有用,例如https://stackoverflow.com/a/4107653/586754。