SynchronizationContext是否仅用于WPF,Win表单?

时间:2013-08-16 12:54:54

标签: c# synchronizationcontext

我读到的每篇文章都讨论过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/

...

1 个答案:

答案 0 :(得分:0)

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

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

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

This article on codeproject非常有用,例如https://stackoverflow.com/a/4107653/586754