<分区>
我一直在研究 SynchronizationContext,这些文章(Understanding SynchronizationContext、ExecutionContext vs SynchronizationContext)确实对我有所帮助,但是 - 当然 - 仍然存在许多问题。
我想实现我自己的 SynchronizationContext
类,它继承自基类,以便我可以在任何 Task
的上下文中使用它(对于自定义消息循环,节流、跟踪等);像这样:
public class SyncContext : System.Threading.SynchronizationContext
{
public SyncContext() : base()
{
}
public override void Send(Threading.SendOrPostCallback d, object state)
{
base.Send(d, state);
}
public override void Post(Threading.SendOrPostCallback d, object state)
{
base.Post(d, state);
}
}
虽然 base.Send
似乎做了预期的事情(同步执行回调),但 base.Post
似乎什么也没做。关于 Post
方法微软声明:
When overridden in a derived class, dispatches an asynchronous message to a synchronization context.
我想不能因为没有实现异步机制而责怪基类,但是调用 base.Post
时应该发生什么,或者正确/更好的实现看起来如何?我的一般方法是否已经产生误导?
感谢您的努力!
后续问题:实现自定义 TaskScheduler
可能是更好的方法 - 也许 TaskScheduler that uses a dedicated thread本质上是我需要的吗?