C# 单线程同步上下文

C# 单线程同步上下文,c#,async-await,synchronizationcontext,C#,Async Await,Synchronizationcontext,在我的服务器中有一个异步方法,我希望它总是在专用线程上运行(调用方不等待它,只是调度),而不是从线程池运行。我发现了一些单线程SynchronizationContext的实现,但它们似乎未经测试,我希望使用更稳定的实现 我找到了Nito AsyncEx,但我还无法确定它是否可以在整个应用程序生命周期中在单个专用线程上运行 有人知道AsyncContext是否符合我的要求吗?或者,您知道单线程SynchronizationContext的一个经过测试且稳定的实现吗?您不需要同步上下文-有一个任务

在我的服务器中有一个异步方法,我希望它总是在专用线程上运行(调用方不等待它,只是调度),而不是从线程池运行。我发现了一些单线程SynchronizationContext的实现,但它们似乎未经测试,我希望使用更稳定的实现

我找到了Nito AsyncEx,但我还无法确定它是否可以在整个应用程序生命周期中在单个专用线程上运行


有人知道AsyncContext是否符合我的要求吗?或者,您知道单线程SynchronizationContext的一个经过测试且稳定的实现吗?

您不需要同步上下文-有一个任务调度器可以完全满足您的需要-
ConcurrentExclusiveSchedulerPair


基本上,您将把所有任务调度到该对中的排他调度器,并且所有任务都将在单独的线程中顺序处理。

因此类似于
MyAsyncMethod().Start(scheduler.ExclusiveScheduler)始终使用相同的
调度程序实例时
?这会一直发生在同一个线程上吗?@mot如果它实际上是异步的,而不仅仅是并行的,那么可能更像是
ContinueWith
configurewait
,但是,是的,这就是想法。您不应该从方法中返回未启动的
任务,这只是自找麻烦:将代码设置为在特定线程上运行需要解决问题。最简单的解决方案是线程安全队列,该队列具有从队列检索作业的循环。“作业”可以只是一个操作委托。为什么需要单线程同步上下文?