Neuigkeiten in der .NET-Klassenbibliothek, Teil 8: Standardspracheinstellung für Threads

Der Dotnet-Doktor  –  1 Kommentare

Die Version 4.5 der .NET-Framework-Klassenbibliothek enthält 947 neue Klassen. Eine Artikelserie stellt zehn Neuerungen vor, die nicht die großen Bibliotheken betreffen und daher nicht so im Licht der Öffentlichkeit stehen. Nachdem zuletzt neue Datenannotationen vorgestellt wurden, geht es heute in Teil 8 um die Standardspracheinstellung für Threads.

Bisher haben in .NET neue Threads automatisch die Spracheinstellungen des Systems übernommen. Wenn man im Programmcode die Spracheinstellungen ändern wollte, musste man in jedem neuen Thread diese Änderung immer wieder vollziehen. Nun kann man in .NET 4.5 die Standardspracheinstellung für alle neuen Threads mit CultureInfo.DefaultThreadCurrentCulture und CultureInfo.DefaultThreadCurrentUICulture setzen, siehe auch folgendes Beispiel. Hier werden beide Aufrufe von Ausgabe() mit der Kultur "amerikanisches Englisch (en-US)" laufen.

public void run()
{
// Kultur definieren
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

// bisher schon: Kultur für aktuellen Thread setzen
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;

// bisher schon: Kultur für kommende Thread setzen
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;

// Ausgabe in diesem Thread
Ausgabe();

// Ausgabe im neuen Thread
Task.Factory.StartNew(() => Ausgabe());
}

public string Ausgabe()
{
Console.WriteLine("Current Culture: " +
Thread.CurrentThread.CurrentCulture);
Console.WriteLine("Current UI Culture: " +
Thread.CurrentThread.CurrentUICulture);
Console.WriteLine(DateTime.Now);
return "";
}