protected DispatchActiveObject(DisposeAction action, string threadName, ApartmentState apartmentState) : base(action, threadName, apartmentState) { m_context = new ActiveObjectSynchronizationContext(this); Thread.MemoryBarrier(); CallOnBackground(() => System.Threading.SynchronizationContext.SetSynchronizationContext(m_context)).WaitEmpty(); AddDisposeAction(() => System.Threading.SynchronizationContext.SetSynchronizationContext(null)).WaitEmpty(); }