CultureInfo.DefaultThreadCurrentCulture Vlastnost

Definice

Získá nebo nastaví výchozí jazykovou verzi pro vlákna v aktuální doméně aplikace.

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

Hodnota vlastnosti

Výchozí jazyková verze pro vlákna v aktuální doméně aplikace nebo null pokud je aktuální jazyková verze systému výchozí jazykovou verzí vlákna v doméně aplikace.

Příklady

Následující příklad ukazuje výchozí chování rozhraní .NET Framework při definování aktuální jazykové verze nového vlákna. Při spuštění nastaví příklad aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na francouzštinu (Francie) ve všech systémech s výjimkou těch, u kterých je výchozí systémová jazyková verze francouzština (Francie). Pokud je výchozí jazyková verze systému již francouzština (Francie), kód nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na angličtinu (USA). Pak zavolá rutinu DisplayRandomNumbers , která vygeneruje tři náhodná čísla a zobrazí je jako hodnoty měny. Dále vytvoří nové vlákno, které také spustí rutinu DisplayRandomNumbers .

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

Jak ukazuje výstup z příkladu, když je příklad spuštěn na počítači, jehož systémová jazyková verze je angličtina (USA), hlavní vlákno zobrazí své hodnoty měny pomocí konvencí formátování jazykové verze francouzštiny (Francie). Vzhledem k tomu, že jazyková verze pracovního vlákna je odvozena z aktuální jazykové verze systému Windows, nikoli z aktuální jazykové verze aplikace, pracovní vlákno zobrazí své hodnoty měny pomocí konvencí formátování anglické (USA) jazykové verze.

Následující příklad používá DefaultThreadCurrentCulture vlastnosti a DefaultThreadCurrentUICulture k definování aktuální jazykové verze a aktuální jazykové verze uživatelského rozhraní nového vlákna aplikace. Při spuštění nastaví příklad aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na francouzštinu (Francie) ve všech systémech s výjimkou těch, u kterých je výchozí systémová jazyková verze francouzština (Francie). Pokud je výchozí systémová jazyková verze francouzština (Francie), nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na angličtinu (USA). Pak zavolá rutinu DisplayRandomNumbers , která vygeneruje tři náhodná čísla a zobrazí je jako hodnoty měny. Dále vytvoří nové vlákno, které také spustí rutinu DisplayRandomNumbers .

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 €

Jak ukazuje výstup z příkladu, když je příklad spuštěn na počítači, jehož systémová jazyková verze je angličtina (USA), hlavní vlákno i pracovní vlákno zobrazí své hodnoty měny pomocí konvencí formátování jazykové verze francouzštiny (Francie).

Poznámky

V rozhraní .NET Framework 4 a předchozích verzích je ve výchozím nastavení jazyková verze všech vláken nastavena na jazykovou verzi systému Windows. U aplikací, jejichž aktuální jazyková verze se liší od výchozí systémové jazykové verze, je toto chování často nežádoucí. V rozhraní .NET Framework 4.5 DefaultThreadCurrentCulture vlastnost umožňuje aplikaci definovat výchozí jazykovou verzi všech vláken v doméně aplikace.

Důležité

Pokud jste explicitně nenastavili jazykovou verzi žádných existujících vláken spouštěných v doméně aplikace, nastavení DefaultThreadCurrentCulture vlastnosti také změní jazykovou verzi těchto vláken. Pokud se však tato vlákna spouští v jiné doméně aplikace, je jejich jazyková verze definována DefaultThreadCurrentCulture vlastností v této doméně aplikace nebo, pokud není definována žádná výchozí hodnota, výchozí jazykovou verzí systému. Z tohoto důvodu doporučujeme vždy explicitně nastavit jazykovou verzi hlavního vlákna aplikace a nespoléhat na DefaultThreadCurrentCulture vlastnost definovat jazykovou verzi hlavního vlákna aplikace.

Pokud není nastaven explicitně, hodnota DefaultThreadCurrentCulture vlastnosti je nulla jazyková verze vláken v doméně aplikace, kterým nebyla přiřazena explicitní jazyková verze, je definována výchozí systémovou jazykovou verzí systému Windows.

Další informace o jazykových verzích, vláknech a doménách aplikací najdete v částech "Jazyková verze a vlákna" a "Jazykové verze a domény aplikací" na CultureInfo referenční stránce.

Platí pro

Viz také