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; }
member this.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 der .NET Framework veranschaulicht, um die aktuelle Kultur eines neuen Threads zu definieren. Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle UI-Kultur auf Französisch (Frankreich) auf allen Systemen fest, außer denen, 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 UI-Kultur auf Englisch (USA) fest. Anschließend wird die DisplayRandomNumbers
Routine aufgerufen, die drei Zufallszahlen generiert und als Währungswerte angezeigt wird. Als Nächstes erstellt er einen neuen Thread, 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 aus dem Beispiel zeigt, wenn das Beispiel auf einem Computer ausgeführt wird, dessen Systemkultur Englisch (USA) ist, zeigt der Hauptthread seine Währungswerte mithilfe der Formatierungskonventionen der französischen (Frankreich)-Kultur an. Da die Kultur des Arbeitsthreads jedoch aus der aktuellen Windows Systemkultur statt der aktuellen Kultur der Anwendung abgeleitet wird, zeigt der Arbeitsthread seine Währungswerte mithilfe der Formatierungskonventionen der englischen (USA)-Kultur an.
Im folgenden Beispiel werden die und die DefaultThreadCurrentCulture DefaultThreadCurrentUICulture Eigenschaften 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 UI-Kultur auf Französisch (Frankreich) auf allen Systemen fest, außer denen, auf denen die Standardsystemkultur bereits französisch (Frankreich) ist. Wenn die Standardsystemkultur bereits französisch (Frankreich) ist, legt sie die aktuelle Kultur und die aktuelle UI-Kultur auf Englisch (USA). Anschließend wird die DisplayRandomNumbers
Routine aufgerufen, die drei Zufallszahlen generiert und als Währungswerte angezeigt wird. Als Nächstes erstellt er einen neuen Thread, 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 aus dem Beispiel zeigt, wenn das Beispiel auf einem Computer ausgeführt wird, dessen Systemkultur Englisch (USA) ist, zeigen sowohl der Hauptthread als auch der Arbeitsthread ihre Währungswerte mithilfe der Formatierungskonventionen der französischen (Frankreich)-Kultur an.
Hinweise
In den .NET Framework 4 und früheren Versionen wird standardmäßig die Kultur aller Threads auf die Windows Systemkultur festgelegt. Für Anwendungen, deren aktuelle Kultur sich von der Standardsystemkultur unterscheidet, ist dieses Verhalten häufig unerwünschter. In der .NET Framework 4.5 ermöglicht die DefaultThreadCurrentCulture Eigenschaft eine Anwendung, die Standardkultur aller Threads in einer Anwendungsdomäne zu definieren.
Wichtig
Wenn Sie die Kultur aller vorhandenen Threads, die in einer Anwendungsdomäne ausgeführt werden, nicht explizit festlegen, ä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 Anwendungsdomäne definiert oder, wenn kein Standardwert definiert ist, durch die DefaultThreadCurrentCulture Standardsystemkultur. Aus diesem Grund wird empfohlen, dass Sie die Kultur Ihres Hauptanwendungsthreads immer explizit festlegen und nicht auf die DefaultThreadCurrentCulture Eigenschaft angewiesen sind, um die Kultur des Hauptanwendungsthreads zu definieren.
Es sei denn, es wird explizit festgelegt, der Wert der DefaultThreadCurrentCulture Eigenschaftnull
, und die Kultur von Threads in einer Anwendungsdomäne, die keine explizite Kultur zugewiesen wurde, wird standardmäßig Windows Systemkultur 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.