我正在努力了解SynchronizationContext
和朋友。如果我在例如控制台应用程序的开头设置自定义同步上下文。在什么情况下,当前同步上下文将与我的异步操作一起流动?和其他人之间是否存在差异Task
,例如Delegate.BeginInvoke
?
void Main()
{
SynchronizationContext.SetSynchronizationContext(new FooContext());
Action a = () =>
{
var current = SynchronizationContext.Current;
//current is null here
};
a.BeginInvoke(null,null);
...sleep
如果我在线程池上执行东西,我是否被迫将同步上下文分配给当前正在执行我的工作的特定线程?