我的库代码依赖于SynchronizationContext
(由应用程序提供)来序列化某些操作并在同一个线程上执行它们。此库代码与其将运行的应用程序无关。
但是,只有SynchronizationContext
的某些实现会执行此操作,例如WindowsFormSynchronizationContext
,DispatcherSynchronizationContext
以及其他我不了解的内容。
其他实现(如基本SynchronizationContext
本身和AspNetSynchronizationContext
)是自由线程的;他们不会做行动序列化。
如果我的代码交给SynchronizationContext
,那么它如何区分这两种情况呢?如果同步上下文不合适,我希望它以明确的错误快速失败。