CultureInfo.DefaultThreadCurrentCulture Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die Standardkultur für Threads in der aktuellen Anwendungsdomäne ab oder legt diese fest.
public:
static property System::Globalization::CultureInfo ^ DefaultThreadCurrentCulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public static System.Globalization.CultureInfo DefaultThreadCurrentCulture { get; set; }
public static System.Globalization.CultureInfo? DefaultThreadCurrentCulture { get; set; }
static member DefaultThreadCurrentCulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentCulture As CultureInfo
Eigenschaftswert
Die Standardkultur für Threads in der aktuellen Anwendungsdomäne oder null
, wenn die aktuelle Systemkultur die standardmäßige Threadkultur in der Anwendungsdomäne ist.
Beispiele
Im folgenden Beispiel wird das Standardverhalten des .NET Framework beim Definieren der aktuellen Kultur eines neuen Threads veranschaulicht. Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur auf französisch (Frankreich) auf allen Systemen fest, mit Ausnahme der Systeme, auf denen die Standardsystemkultur bereits Französisch (Frankreich) ist. Wenn die Standardsystemkultur bereits Französisch (Frankreich) ist, legt der Code die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur auf Englisch (USA) fest. Anschließend wird die DisplayRandomNumbers
Routine aufgerufen, die drei Zufallszahlen generiert und als Währungswerte anzeigt. Als Nächstes wird ein neuer Thread erstellt, der auch die DisplayRandomNumbers
Routine ausführt.
using System;
using System.Globalization;
using System.Text;
using System.Threading;
public class Example
{
public static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
// Change current culture
CultureInfo culture;
if (Thread.CurrentThread.CurrentCulture.Name == "fr-FR")
culture = CultureInfo.CreateSpecificCulture("en-US");
else
culture = CultureInfo.CreateSpecificCulture("fr-FR");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
// Generate and display three random numbers on the current thread.
DisplayRandomNumbers();
Thread.Sleep(1000);
Thread workerThread = new Thread(new ThreadStart(Example.DisplayRandomNumbers));
workerThread.Start();
}
private static void DisplayRandomNumbers()
{
Console.WriteLine();
Console.WriteLine("Current Culture: {0}",
Thread.CurrentThread.CurrentCulture);
Console.WriteLine("Current UI Culture: {0}",
Thread.CurrentThread.CurrentUICulture);
Console.Write("Random Values: ");
Random rand = new Random();
for (int ctr = 0; ctr <= 2; ctr++)
Console.Write(" {0:C2} ", rand.NextDouble());
Console.WriteLine();
}
}
// The example displays output similar to the following:
// Current Culture: fr-FR
// Current UI Culture: fr-FR
// Random Values: 0,77 € 0,35 € 0,52 €
//
// Current Culture: en-US
// Current UI Culture: en-US
// Random Values: $0.30 $0.79 $0.65
Imports System.Globalization
Imports System.Text
Imports System.Threading
Module Example
Public Sub Main()
Console.OutputEncoding = Encoding.UTF8
' Change current culture
Dim culture As CultureInfo
If Thread.CurrentThread.CurrentCulture.Name = "fr-FR" Then
culture = CultureInfo.CreateSpecificCulture("en-US")
Else
culture = CultureInfo.CreateSpecificCulture("fr-FR")
End If
Thread.CurrentThread.CurrentCulture = culture
Thread.CurrentThread.CurrentUICulture = culture
' Generate and display three random numbers on the current thread.
DisplayRandomNumbers()
Thread.Sleep(1000)
Dim workerThread As New Thread(AddressOf Example.DisplayRandomNumbers)
workerThread.Start()
End Sub
Private Sub DisplayRandomNumbers()
Console.WriteLine()
Console.WriteLine("Current Culture: {0}",
Thread.CurrentThread.CurrentCulture)
Console.WriteLine("Current UI Culture: {0}",
Thread.CurrentThread.CurrentUICulture)
Console.Write("Random Values: ")
Dim rand As New Random()
For ctr As Integer = 0 To 2
Console.Write(" {0:C2} ", rand.NextDouble())
Next
Console.WriteLine()
End Sub
End Module
' The example displays output similar to the following:
' Current Culture: fr-FR
' Current UI Culture: fr-FR
' Random Values: 0,77 € 0,35 € 0,52 €
'
' Current Culture: en-US
' Current UI Culture: en-US
' Random Values: $0.30 $0.79 $0.65
Wie die Ausgabe des Beispiels zeigt, zeigt der Standard Thread seine Währungswerte unter Verwendung der Formatierungskonventionen der französischen Kultur (Frankreich) an, wenn das Beispiel auf einem Computer mit der Systemkultur Englisch (USA) ausgeführt wird. Da die Kultur des Workerthreads jedoch von der aktuellen Windows-Systemkultur und nicht von der aktuellen Kultur der Anwendung abgeleitet wird, zeigt der Arbeitsthread seine Währungswerte mithilfe der Formatierungskonventionen der englischen Kultur (USA) an.
Im folgenden Beispiel werden die DefaultThreadCurrentCulture Eigenschaften und DefaultThreadCurrentUICulture verwendet, um die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur eines neuen Anwendungsthreads zu definieren. Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur auf französisch (Frankreich) auf allen Systemen fest, mit Ausnahme der Systeme, auf denen die Standardsystemkultur bereits Französisch (Frankreich) ist. Wenn die Standardsystemkultur bereits Französisch (Frankreich) ist, wird die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur auf Englisch (USA) festgelegt. Anschließend wird die DisplayRandomNumbers
Routine aufgerufen, die drei Zufallszahlen generiert und als Währungswerte anzeigt. Als Nächstes wird ein neuer Thread erstellt, der auch die DisplayRandomNumbers
Routine ausführt.
using System;
using System.Globalization;
using System.Text;
using System.Threading;
public class Example
{
public static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
// Change current culture
CultureInfo culture;
if (Thread.CurrentThread.CurrentCulture.Name == "fr-FR")
culture = CultureInfo.CreateSpecificCulture("en-US");
else
culture = CultureInfo.CreateSpecificCulture("fr-FR");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
// Generate and display three random numbers on the current thread.
DisplayRandomNumbers();
Thread.Sleep(1000);
Thread workerThread = new Thread(new ThreadStart(Example.DisplayRandomNumbers));
workerThread.Start();
}
private static void DisplayRandomNumbers()
{
Console.WriteLine();
Console.WriteLine("Current Culture: {0}",
Thread.CurrentThread.CurrentCulture);
Console.WriteLine("Current UI Culture: {0}",
Thread.CurrentThread.CurrentUICulture);
Console.Write("Random Values: ");
Random rand = new Random();
for (int ctr = 0; ctr <= 2; ctr++)
Console.Write(" {0:C2} ", rand.NextDouble());
Console.WriteLine();
}
}
// The example displays output similar to the following:
// Current Culture: fr-FR
// Current UI Culture: fr-FR
// Random Values: 0,78 € 0,80 € 0,37 €
//
// Current Culture: fr-FR
// Current UI Culture: fr-FR
// Random Values: 0,52 € 0,32 € 0,15 €
Imports System.Globalization
Imports System.Text
Imports System.Threading
Module Example
Public Sub Main()
Console.OutputEncoding = Encoding.UTF8
' Change current culture
Dim culture As CultureInfo
If Thread.CurrentThread.CurrentCulture.Name = "fr-FR" Then
culture = CultureInfo.CreateSpecificCulture("en-US")
Else
culture = CultureInfo.CreateSpecificCulture("fr-FR")
End If
CultureInfo.DefaultThreadCurrentCulture = culture
CultureInfo.DefaultThreadCurrentUICulture = culture
Thread.CurrentThread.CurrentCulture = culture
Thread.CurrentThread.CurrentUICulture = culture
' Generate and display three random numbers on the current thread.
DisplayRandomNumbers()
Thread.Sleep(1000)
Dim workerThread As New Thread(AddressOf Example.DisplayRandomNumbers)
workerThread.Start()
End Sub
Private Sub DisplayRandomNumbers()
Console.WriteLine()
Console.WriteLine("Current Culture: {0}",
Thread.CurrentThread.CurrentCulture)
Console.WriteLine("Current UI Culture: {0}",
Thread.CurrentThread.CurrentUICulture)
Console.Write("Random Values: ")
Dim rand As New Random()
For ctr As Integer = 0 To 2
Console.Write(" {0:C2} ", rand.NextDouble())
Next
Console.WriteLine()
End Sub
End Module
' The example displays output similar to the following:
' Current Culture: fr-FR
' Current UI Culture: fr-FR
' Random Values: 0,78 € 0,80 € 0,37 €
'
' Current Culture: fr-FR
' Current UI Culture: fr-FR
' Random Values: 0,52 € 0,32 € 0,15 €
Wie die Ausgabe des Beispiels zeigt, zeigen sowohl der Standard-Thread als auch der Arbeitsthread ihre Währungswerte unter Verwendung der Formatierungskonventionen der französischen Kultur (Frankreich) an, wenn das Beispiel auf einem Computer mit der Systemkultur Englisch (USA) ausgeführt wird.
Hinweise
In den .NET Framework 4 und früheren Versionen ist die Kultur aller Threads standardmäßig auf die Windows-Systemkultur festgelegt. Bei Anwendungen, deren aktuelle Kultur sich von der Standardsystemkultur unterscheidet, ist dieses Verhalten häufig unerwünscht. Im .NET Framework 4.5 ermöglicht die DefaultThreadCurrentCulture -Eigenschaft einer Anwendung, die Standardkultur aller Threads in einer Anwendungsdomäne zu definieren.
Wichtig
Wenn Sie die Kultur vorhandener Threads, die in einer Anwendungsdomäne ausgeführt werden, nicht explizit festgelegt haben, ändert das Festlegen der DefaultThreadCurrentCulture -Eigenschaft auch die Kultur dieser Threads. Wenn diese Threads jedoch in einer anderen Anwendungsdomäne ausgeführt werden, wird ihre Kultur durch die -Eigenschaft in dieser DefaultThreadCurrentCulture Anwendungsdomäne oder, wenn kein Standardwert definiert ist, durch die Standardsystemkultur definiert. Aus diesem Grund wird empfohlen, die Kultur Ihres Standard Anwendungsthreads immer explizit festzulegen und sich nicht auf die DefaultThreadCurrentCulture -Eigenschaft zu verlassen, um die Kultur des Standard Anwendungsthreads zu definieren.
Sofern sie nicht explizit festgelegt ist, ist null
der Wert der DefaultThreadCurrentCulture Eigenschaft , und die Kultur von Threads in einer Anwendungsdomäne, denen keine explizite Kultur zugewiesen wurde, wird durch die Windows-Standardsystemkultur definiert.
Weitere Informationen zu Kulturen, Threads und Anwendungsdomänen finden Sie in den Abschnitten "Kultur und Threads" und "Kultur und Anwendungsdomänen" auf der CultureInfo Referenzseite.