SynchronizationContext笔记

  SynchronizationContext 类是一个基类,可提供不带同步的自由线程上下文。 此类实现的同步模型的目的是使公共语言运行库内部的异步/同步操作能够针对不同的异步模型采取正确的行为。此模型还简化了托管应用程序为在不同的同步环境下正常工作而必须遵循的一些要求。同步模型的提供程序可以扩展此类并为这些方法提供自己的实现。
  简而言之就是允许一个线程和另外一个线程进行通讯,SynchronizationContext在通讯中充当传输者的角色。另外这里有个地方需要清楚的,不是每个线程都附加SynchronizationContext这个对象,只有UI线程是一直拥有的。

Current 获取当前同步上下文

var context = SynchronizationContext.Current;

 

Send 一个同步消息调度到一个同步上下文。

SendOrPostCallback callback = o =>
                                              {
                                                  //TODO:
                                              };
context.Send(callback,null);

send调用后会阻塞直到调用完成。

 

Post 将异步消息调度到一个同步上下文。

SendOrPostCallback callback = o =>
                                              {
                                                  //TODO:
                                              };
context.Post(callback,null);

和send的调用方法一样,不过Post会启动一个线程来调用,不会阻塞当前线程。

posted @ 2017-09-12 10:24  wzwyc  阅读(366)  评论(0)    收藏  举报