use*_*177 6 .net c# asynchronous task-parallel-library async-await
我有以下异步代码:
// Main system culture is English here
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("es");
WriteLine($"{Thread.CurrentThread.ManagedThreadId}:Culture:{Thread.CurrentThread.CurrentCulture}");
await Task.Delay(1).ConfigureAwait(false);
WriteLine($"{Thread.CurrentThread.ManagedThreadId}:Culture:{Thread.CurrentThread.CurrentCulture}");
Run Code Online (Sandbox Code Playgroud)
我期望的结果是在等待之后具有不同的线程id并且新的线程id再次具有未修改的系统文化.
这没有发生; 线程确实与前一个不同,但文化以某种方式从前一个线程流出.
为什么保持文化,如果我提出与ConfigureAwait我不需要保留SynchronisationContext?我的理解是,文化没有存储在其中,ExecutionContext因此我不确定为什么会发生这种情况.
这是一个控制台应用程序.
完整的示例代码:https://pastebin.com/raw/rE6vZ9Jm