CultureInfo.DefaultThreadCurrentCulture doesn't affect threads of Task.Run in C#?

1 week ago 8
ARTICLE AD BOX

This question has this answer.

However, this MRE:

static async Task Scenario_DefaultThreadCurrentCulture() { CultureInfo.CurrentCulture = new CultureInfo("en-US"); CultureInfo.CurrentUICulture = new CultureInfo("en-US"); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fr-FR"); CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("fr-FR"); Console.WriteLine($"Main thread : {CultureInfo.CurrentCulture.Name}"); await Task.Run(() => { Console.WriteLine($"Task.Run : {CultureInfo.CurrentCulture.Name}"); }); }

Outputs:

Main thread : en-US Task.Run : en-US

Why doesn't CultureInfo.DefaultThreadCurrentCulture do anything here? Is it because Task.Run uses threads from a thread pool which spawned its threads before CultureInfo.DefaultThreadCurrentCulture ever happened?

Read Entire Article