Допустим, у меня есть этот код
ThreadPool.QueueUserWorkItem(unused =>
{
SynchronizationContext.SetSynchronizationContext(
new MyCustomSynchronizationContext());
// not reset back to null
}, null);
Текущий контекст синхронизации просачивается обратно в пул потоков. Если кто-то снова вызовет ThreadPool.QueueUserWorkItem и тот же поток будет использоваться для обработки другого рабочего элемента, будет ли текущий контекст синхронизации этого потока сброшен до нулевого или останется MyCustomSynchronizationContext?
Применяется ли тот же ответ к любому другому способу выполнения задач в пуле потоков, например. Task.Run, BeginInvoke и т. д.?
Я знаю, что обычно TLS не сбрасывается, но исходный код .NET показывает, что хранилище текущего контекста синхронизации не очень четко определено (в большинстве случаев это происходит из контекста выполнения, но, похоже, это особый случай для WinRT для некоторых причина).