CultureInfo.DefaultThreadCurrentCulture Eigenschaft

Definition

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

CultureInfo

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

Das folgende Beispiel veranschaulicht das Standardverhalten der .NET Framework beim Definieren der aktuellen Kultur eines neuen Threads. Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur auf allen Systemen auf Französisch (Frankreich) fest, mit Ausnahme der Systeme, für die 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. Anschließend ruft sie die Routine DisplayRandomNumbers auf, die drei Zufallszahlen generiert und als Währungswerte anzeigt. Als Nächstes wird ein neuer Thread erstellt, der auch die -Routine DisplayRandomNumbers ausricht.

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 Hauptthread seine Währungswerte unter Verwendung der Formatierungskonventionen der Kultur Französisch (Frankreich) an, wenn das Beispiel auf einem Computer ausgeführt wird, dessen Systemkultur Englisch (USA) ist. Da die Kultur des Arbeitsthreads jedoch von der aktuellen Windows-Systemkultur und nicht von der aktuellen Kultur der Anwendung abgeleitet ist, zeigt der Arbeitsthread seine Währungswerte mithilfe der Formatierungskonventionen der Kultur Englisch (USA) an.

Im folgenden Beispiel werden die Eigenschaften und verwendet, um die aktuelle Kultur und die aktuelle DefaultThreadCurrentCulture DefaultThreadCurrentUICulture Benutzeroberflächenkultur eines neuen Anwendungsthreads zu definieren. Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle Benutzeroberflächenkultur auf allen Systemen auf Französisch (Frankreich) fest, mit Ausnahme der Systeme, für die 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. Anschließend ruft sie die Routine DisplayRandomNumbers auf, die drei Zufallszahlen generiert und als Währungswerte anzeigt. Als Nächstes wird ein neuer Thread erstellt, der auch die -Routine DisplayRandomNumbers ausricht.

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, werden beim Ausführen des Beispiels auf einem Computer, dessen Systemkultur Englisch (USA) ist, sowohl der Hauptthread als auch der Arbeitsthread ihre Währungswerte mithilfe der Formatierungskonventionen der Kultur Französisch (Frankreich) anzeigen.

Hinweise

In der .NET Framework 4 und früheren Versionen wird die Kultur aller Threads standardmäßig auf die Windows festgelegt. Bei Anwendungen, deren aktuelle Kultur sich von der Standardsystemkultur unterscheidet, ist dieses Verhalten häufig unerwünscht. In .NET Framework 4.5 ermöglicht die -Eigenschaft einer Anwendung, die Standardkultur aller Threads DefaultThreadCurrentCulture 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 -Eigenschaft auch die Kultur DefaultThreadCurrentCulture dieser Threads. Wenn diese Threads jedoch in einer anderen Anwendungsdomäne ausgeführt werden, wird ihre Kultur durch die -Eigenschaft in dieser Anwendungsdomäne oder, wenn kein Standardwert definiert ist, durch die DefaultThreadCurrentCulture Standardsystemkultur definiert. Aus diesem Grund wird empfohlen, die Kultur des Hauptanwendungsthreads immer explizit festzulegen und sich nicht auf die -Eigenschaft zu verlassen, um die Kultur des Hauptanwendungsthreads DefaultThreadCurrentCulture zu definieren.

Sofern nicht explizit festgelegt, ist der Wert der -Eigenschaft , und die Kultur der Threads in einer Anwendungsdomäne, denen keine explizite Kultur zugewiesen wurde, wird von der standarddefinierten Windows DefaultThreadCurrentCulture null definiert.

Weitere Informationen zu Kulturen, Threads und Anwendungsdomänen finden Sie in den Abschnitten "Kultur und Threads" und "Kultur und Anwendungsdomänen" auf CultureInfo der Referenzseite.

Gilt für

Siehe auch