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
using System;
using System.Threading.Tasks;
using System.Globalization;
public class Program
{
public static async Task Main()
{
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}");
});
}
}
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?
Mobile version