CultureInfo.DefaultThreadCurrentCulture Propriedade

Definição

Obtém ou define a cultura padrão para threads no domínio de aplicativo atual.

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

Valor da propriedade

CultureInfo

A cultura padrão para threads no domínio de aplicativo atual, ou null, se a cultura do sistema atual for a cultura do thread padrão no domínio do aplicativo.

Exemplos

o exemplo a seguir ilustra o comportamento padrão do .NET Framework na definição da cultura atual de um novo thread. Na inicialização, o exemplo define a cultura atual e a cultura da interface do usuário atual como francês (França) em todos os sistemas, exceto aquelas em que a cultura do sistema padrão já é a francês (França). Se a cultura do sistema padrão já for francês (França), o código definirá a cultura atual e a cultura da interface do usuário atual como Inglês (Estados Unidos). Em seguida, ele chama a DisplayRandomNumbers rotina, que gera três números aleatórios e os exibe como valores de moeda. Em seguida, ele cria um novo thread, que também executa a DisplayRandomNumbers rotina.

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

Como a saída do exemplo mostra, quando o exemplo é executado em um computador cuja cultura do sistema é inglês (Estados Unidos), o thread principal exibe seus valores de moeda usando as convenções de formatação da cultura francesa (França). no entanto, como a cultura do thread de trabalho é derivada da cultura do sistema Windows atual em vez da cultura atual do aplicativo, o thread de trabalho exibe seus valores de moeda usando as convenções de formatação da cultura em inglês (Estados Unidos).

O exemplo a seguir usa DefaultThreadCurrentCulture as DefaultThreadCurrentUICulture Propriedades e para definir a cultura atual e a cultura da interface do usuário atual de um novo thread de aplicativo. Na inicialização, o exemplo define a cultura atual e a cultura da interface do usuário atual como francês (França) em todos os sistemas, exceto aquelas em que a cultura do sistema padrão já é a francês (França). Se a cultura do sistema padrão já for francês (França), ela definirá a cultura atual e a cultura da interface do usuário atual como Inglês (Estados Unidos). Em seguida, ele chama a DisplayRandomNumbers rotina, que gera três números aleatórios e os exibe como valores de moeda. Em seguida, ele cria um novo thread, que também executa a DisplayRandomNumbers rotina.

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 €

Como a saída do exemplo mostra, quando o exemplo é executado em um computador cuja cultura do sistema é inglês (Estados Unidos), o thread principal e o thread de trabalho exibem seus valores de moeda usando as convenções de formatação da cultura francesa (França).

Comentários

no .NET Framework 4 e versões anteriores, por padrão, a cultura de todos os threads é definida como a cultura do sistema Windows. Para aplicativos cuja cultura atual difere da cultura do sistema padrão, esse comportamento geralmente é indesejável. no .NET Framework 4,5, a DefaultThreadCurrentCulture propriedade permite que um aplicativo defina a cultura padrão de todos os threads em um domínio de aplicativo.

Importante

Se você não definiu explicitamente a cultura de quaisquer threads existentes em execução em um domínio de aplicativo, a definição da DefaultThreadCurrentCulture propriedade também altera a cultura desses threads. No entanto, se esses threads forem executados em outro domínio de aplicativo, sua cultura será definida pela DefaultThreadCurrentCulture Propriedade nesse domínio de aplicativo ou, se nenhum valor padrão for definido, pela cultura de sistema padrão. Por isso, é recomendável que você sempre defina explicitamente a cultura do seu thread de aplicativo principal e não confie na DefaultThreadCurrentCulture propriedade para definir a cultura do thread do aplicativo principal.

a menos que seja definido explicitamente, o valor da DefaultThreadCurrentCulture propriedade é null , e a cultura de threads em um domínio de aplicativo que não tenha sido atribuído a uma cultura explícita é definida pela cultura de sistema padrão Windows.

Para obter mais informações sobre culturas, threads e domínios de aplicativo, consulte as seções "cultura e threads" e "domínios de aplicativo e cultura" na CultureInfo página de referência.

Aplica-se a

Confira também