1

我读到的每篇关于 SynchronizationContext 的文章都谈到了处理表单的控件。它是 SynchronizationContext 的唯一目的吗?

我还必须问一个基本的问题:如果 UI 线程使用它,为什么我不能在使用每个控件之前锁定它?为什么我需要所有这些“SynchronizationContext”来与控件进行通信?我的意思是,这不是传达控件的更好方式吗?(我知道它不会工作)。

文章:

http://blogs.msdn.com/b/csharpfaq/archive/2010/06/18/parallel-programming-task-schedulers-and-synchronization-context.aspx

http://reedcopsey.com/2010/03/18/parallelism-in-net-part-15-making-tasks-run-the-taskscheduler/

..

4

1 回答 1

1

SynchronizationContext 可用于在任何其他线程的上下文中执行工作。

不过这里有一个主要警告:其他线程需要为此做好准备,例如通过使用消息泵,就像 WinForm 和 WPF 中的 UI 线程所做的那样。此外,这些 UI 线程始终具有 SynchronizationContext,而其他线程类型通常没有。

至于锁定作为替代方案,这将需要在 Microsoft 类中进行完全不同的设计。这可能是可能的,尽管它也可能导致线程在等待时长时间阻塞。我认为它会为滥用打开很多可能性。

这篇关于 codeproject的文章很有帮助,比如https://stackoverflow.com/a/4107653/586754

于 2015-09-30T08:16:29.360 回答