CultureInfo.DefaultThreadCurrentCulture Właściwość

Definicja

Pobiera lub ustawia kulturę domyślną dla wątków w bieżącej domenie aplikacji.

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

Wartość właściwości

CultureInfo

Domyślna kultura wątków w bieżącej domenie aplikacji lub bieżąca kultura systemu jest domyślną kulturą wątków null w domenie aplikacji.

Przykłady

Poniższy przykład ilustruje domyślne zachowanie .NET Framework definiowania bieżącej kultury nowego wątku. Podczas uruchamiania w przykładzie bieżąca kultura i bieżąca kultura interfejsu użytkownika są ustawiane na francuski (Francja) we wszystkich systemach z wyjątkiem tych, w których domyślna kultura systemowa to już Francuski (Francja). Jeśli domyślna kultura systemowa to już francuski (Francja), kod ustawia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na język angielski (Stany Zjednoczone). Następnie wywołuje procedurę DisplayRandomNumbers , która generuje trzy liczby losowe i wyświetla je jako wartości walut. Następnie tworzy nowy wątek, który również wykonuje DisplayRandomNumbers procedurę.

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 pokazują dane wyjściowe z przykładu, gdy przykład jest uruchamiany na komputerze, na którym kultura systemowa to angielski (Stany Zjednoczone), główny wątek wyświetla wartości walut przy użyciu konwencji formatowania kultury francuskiej (Francji). Jednak ponieważ kultura wątku roboczego jest pochodną bieżącej kultury systemu Windows, a nie bieżącej kultury aplikacji, wątek roboczy wyświetla wartości walut przy użyciu konwencji formatowania kultury angielskiej (Stany Zjednoczone).

W poniższym przykładzie użyto DefaultThreadCurrentCulture właściwości i do zdefiniowania bieżącej kultury i bieżącej kultury interfejsu DefaultThreadCurrentUICulture użytkownika nowego wątku aplikacji. Podczas uruchamiania w przykładzie bieżąca kultura i bieżąca kultura interfejsu użytkownika są ustawiane na francuski (Francja) we wszystkich systemach z wyjątkiem tych, w których domyślna kultura systemowa to już Francuski (Francja). Jeśli domyślna kultura systemowa to już francuski (Francja), bieżąca kultura i bieżąca kultura interfejsu użytkownika są ustawiane na język angielski (Stany Zjednoczone). Następnie wywołuje procedurę DisplayRandomNumbers , która generuje trzy liczby losowe i wyświetla je jako wartości walut. Następnie tworzy nowy wątek, który również wykonuje DisplayRandomNumbers procedurę.

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 pokazują dane wyjściowe z przykładu, gdy przykład jest uruchamiany na komputerze, na którym kultura systemowa to angielski (Stany Zjednoczone), zarówno główny wątek, jak i wątek roboczy wyświetlają wartości walut przy użyciu konwencji formatowania kultury francuskiej (Francja).

Uwagi

W .NET Framework 4 i poprzednich wersjach kultura wszystkich wątków jest domyślnie ustawiona na Windows systemu. W przypadku aplikacji, których bieżąca kultura różni się od domyślnej kultury systemowej, to zachowanie jest często niepożądane. W .NET Framework 4.5 właściwość umożliwia aplikacji definiowanie domyślnej kultury wszystkich wątków DefaultThreadCurrentCulture w domenie aplikacji.

Ważne

Jeśli nie ustawiono jawnie kultury istniejących wątków wykonywanych w domenie aplikacji, ustawienie właściwości również zmienia kulturę DefaultThreadCurrentCulture tych wątków. Jeśli jednak te wątki są wykonywane w innej domenie aplikacji, ich kultura jest definiowana przez właściwość w tej domenie aplikacji lub, jeśli nie zdefiniowano wartości domyślnej, przez domyślną DefaultThreadCurrentCulture kulturę systemową. W związku z tym zalecamy, aby zawsze jawnie ustawić kulturę głównego wątku aplikacji i nie polegać na właściwości w celu zdefiniowania kultury głównego DefaultThreadCurrentCulture wątku aplikacji.

Jeśli nie zostanie jawnie ustawiona, wartość właściwości to , a kultura wątków w domenie aplikacji, do których nie przypisano jawnej kultury, jest definiowana przez domyślną Windows DefaultThreadCurrentCulture null systemową.

Aby uzyskać więcej informacji na temat kultur, wątków i domen aplikacji, zobacz sekcje "Kultura i wątki" i "Kultura i domeny aplikacji" na CultureInfo stronie referencyjnej.

Dotyczy

Zobacz też