CultureInfo.DefaultThreadCurrentCulture wirkt sich nicht auf Threads von Task.Run in C# aus?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 CultureInfo.DefaultThreadCurrentCulture wirkt sich nicht auf Threads von Task.Run in C# aus?

Post by Anonymous »

Diese Frage:

Gibt es eine Möglichkeit, die Kultur für eine gesamte Anwendung festzulegen? Alle aktuellen Threads und neuen Threads?

...hat diese Antwort:

In .NET 4.5 können Sie die CultureInfo.DefaultThreadCurrentCulture-Eigenschaft verwenden, um die Kultur einer AppDomain zu ändern.

Diese MRE:

Code: Select all

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}");
});
}
Ausgaben:

Code: Select all

Main thread : en-US
Task.Run    : en-US
Warum macht CultureInfo.DefaultThreadCurrentCulture hier nichts? Liegt es daran, dass Task.Run Threads aus einem Thread-Pool verwendet, der seine Threads erzeugt hat, bevor CultureInfo.DefaultThreadCurrentCulture jemals passiert ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post