CultureInfo.DefaultThreadCurrentCulture Свойство

Определение

Возвращает или задает язык и региональные параметры, используемые по умолчанию для потоков в текущем домене приложения.Gets or sets the default culture for threads in the current application domain.

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; }
member this.DefaultThreadCurrentCulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentCulture As CultureInfo

Значение свойства

Язык и региональные параметры по умолчанию для потоков в текущем домене приложения или значение null, если текущий язык и региональные параметры системы являются заданными по умолчанию для потока в домене приложения.The default culture for threads in the current application domain, or null if the current system culture is the default thread culture in the application domain.

Примеры

В следующем примере показано поведение по умолчанию .NET Framework при определении текущего языка и региональных параметров нового потока.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. При запуске в примере текущий язык и региональные параметры, а также текущий язык и региональные параметры пользовательского интерфейса задаются на французском (Франция) во всех системах, за исключением тех, для которых язык и региональные параметры по умолчанию уже французский (Франция).At startup, the example sets the current culture and the current UI culture to French (France) on all systems except those on which the default system culture is already French (France). Если язык и региональные параметры по умолчанию уже являются французскими (Франция), код задает для текущего языка и региональных параметров текущий язык и региональные параметры пользовательского интерфейса значение Английский (США).If the default system culture is already French (France), the code sets the current culture and the current UI culture to English (United States). Затем он вызывает подпрограммы DisplayRandomNumbers, которая создает три случайных числа и отображает их в виде денежных значений.It then calls the DisplayRandomNumbers routine, which generates three random numbers and displays them as currency values. Затем создается новый поток, который также выполняет подпрограммы DisplayRandomNumbers.Next, it creates a new thread, which also executes the DisplayRandomNumbers routine.

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     

Как видно из выходных данных примера, при запуске примера на компьютере, для которого используется английский язык (США), основной поток отображает значения валют, используя соглашения о форматировании для французского языка и региональных параметров (Франция).As the output from the example shows, when the example is run on a computer whose system culture is English (United States), the main thread displays its currency values using the formatting conventions of the French (France) culture. Однако поскольку язык и региональные параметры рабочего потока являются производными от текущей культуры системы Windows, а не текущего языка и региональных параметров приложения, Рабочий поток отображает значения денежных единиц, используя соглашения о форматировании для английского (США) языка и региональных параметров.However, because the worker thread's culture is derived from the current Windows system culture rather than the application's current culture, the work thread displays its currency values using the formatting conventions of the English (United States) culture.

В следующем примере свойства DefaultThreadCurrentCulture и DefaultThreadCurrentUICulture используются для определения текущего языка и региональных параметров и текущего языка и региональных параметров пользовательского интерфейса нового потока приложения.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread. При запуске в примере текущий язык и региональные параметры, а также текущий язык и региональные параметры пользовательского интерфейса задаются на французском (Франция) во всех системах, за исключением тех, для которых язык и региональные параметры по умолчанию уже французский (Франция).At startup, the example sets the current culture and the current UI culture to French (France) on all systems except those on which the default system culture is already French (France). Если язык и региональные параметры по умолчанию уже являются французскими (Франция), она устанавливает для текущего языка и региональных параметров текущий язык и региональные параметры пользовательского интерфейса значение Английский (США).If the default system culture is already French (France), it sets the current culture and the current UI culture to English (United States). Затем он вызывает подпрограммы DisplayRandomNumbers, которая создает три случайных числа и отображает их в виде денежных значений.It then calls the DisplayRandomNumbers routine, which generates three random numbers and displays them as currency values. Затем создается новый поток, который также выполняет подпрограммы DisplayRandomNumbers.Next, it creates a new thread, which also executes the DisplayRandomNumbers routine.

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 €

Как видно из выходных данных примера, при запуске примера на компьютере, для которого используется английский язык (США), как основной поток, так и рабочий поток отображают значения валют, используя соглашения о форматировании для французского (Франция) языка и региональных параметров.As the output from the example shows, when the example is run on a computer whose system culture is English (United States), both the main thread and the worker thread display their currency values using the formatting conventions of the French (France) culture.

Комментарии

В .NET Framework 4.NET Framework 4 и предыдущих версиях по умолчанию для языка и региональных параметров всех потоков задана культура системы Windows.In the .NET Framework 4.NET Framework 4 and previous versions, by default, the culture of all threads is set to the Windows system culture. Для приложений, текущие язык и региональные параметры которых отличаются от языка и региональных параметров системы по умолчанию, такое поведение часто нежелательно.For applications whose current culture differs from the default system culture, this behavior is often undesirable. В .NET Framework 4.5.NET Framework 4.5свойство DefaultThreadCurrentCulture позволяет приложению определить язык и региональные параметры по умолчанию для всех потоков в домене приложения.In the .NET Framework 4.5.NET Framework 4.5, the DefaultThreadCurrentCulture property enables an application to define the default culture of all threads in an application domain.

Важно!

Если язык и региональные параметры не заданы явным образом для всех существующих потоков, выполняющихся в домене приложения, то установка свойства DefaultThreadCurrentCulture также изменяет язык и региональные параметры этих потоков.If you have not explicitly set the culture of any existing threads executing in an application domain, setting the DefaultThreadCurrentCulture property also changes the culture of these threads. Однако если эти потоки выполняются в другом домене приложения, их язык и региональные параметры определяются свойством DefaultThreadCurrentCulture в этом домене приложения или, если значение по умолчанию не определено в соответствии с языком по умолчанию системы.However, if these threads execute in another application domain, their culture is defined by the DefaultThreadCurrentCulture property in that application domain or, if no default value is defined, by the default system culture. Поэтому рекомендуется всегда явно задавать язык и региональные параметры для основного потока приложения, а не использовать свойство DefaultThreadCurrentCulture для определения языка и региональных параметров основного потока приложения.Because of this, we recommend that you always explicitly set the culture of your main application thread, and not rely on the DefaultThreadCurrentCulture property to define the culture of the main application thread.

Если это свойство не задано явно, значение свойства DefaultThreadCurrentCulture null, а язык и региональные параметры потоков в домене приложения, которым не назначен явный язык и региональные параметры, определяются языком и региональными параметрами по умолчанию системы Windows.Unless it is set explicitly, the value of the DefaultThreadCurrentCulture property is null, and the culture of threads in an application domain that have not been assigned an explicit culture is defined by the default Windows system culture.

Дополнительные сведения о языках и региональных параметрах, потоках и доменах приложений см. в разделах "Культура и потоки" и "языки и региональные параметры и домены приложений" на странице справочника по CultureInfo.For more information about cultures, threads, and application domains, see the "Culture and threads" and "Culture and application domains" sections in the CultureInfo reference page.

Применяется к

Дополнительно