このコードがあるとしましょう
ThreadPool.QueueUserWorkItem(unused =>
{
SynchronizationContext.SetSynchronizationContext(
new MyCustomSynchronizationContext());
// not reset back to null
}, null);
現在の同期コンテキストがスレッド プールにリークされます。誰かが ThreadPool.QueueUserWorkItem を再度呼び出し、同じスレッドが他の作業項目の処理に使用された場合、そのスレッドの現在の同期コンテキストは null にリセットされますか、それとも MyCustomSynchronizationContext のままになりますか?
Task.Run、BeginInvoke など、スレッド プールでタスクを実行する他の方法にも同じ答えが当てはまりますか?
一般的にTLSはリセットされないことは知っていますが、.NETソースコードは、現在の同期コンテキストのストレージがあまり明確に定義されていないことを示しています(ほとんどの場合、実行コンテキストから来ますが、一部のWinRTでは特別なケースのようです)理由)。