CultureInfo.DefaultThreadCurrentUICulture Propriedade

Definição

Obtém ou define a cultura padrão interface do usuário para threads no domínio do aplicativo atual.Gets or sets the default UI culture for threads in the current application domain.

public:
 static property System::Globalization::CultureInfo ^ DefaultThreadCurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public static System.Globalization.CultureInfo DefaultThreadCurrentUICulture { get; set; }
public static System.Globalization.CultureInfo? DefaultThreadCurrentUICulture { get; set; }
member this.DefaultThreadCurrentUICulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentUICulture As CultureInfo

Valor da propriedade

CultureInfo

A cultura padrão da interface do usuário para threads no domínio do aplicativo atual ou null se a cultura da interface do usuário do sistema atual for a cultura padrão para threads da interface do usuário no domínio do aplicativo.The default UI culture for threads in the current application domain, or null if the current system UI culture is the default thread UI culture in the application domain.

Exceções

Em uma operação de conjuntos, o valor da propriedade Name é inválido.In a set operation, the Name property value is invalid.

Exemplos

O exemplo a seguir ilustra o comportamento padrão do .NET Framework na definição da cultura atual de um novo thread.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. Ele usa recursos de idioma inglês e russo.It uses English and Russian language resources. O seguinte arquivo de texto chamado GreetingStrings.txt contém os recursos do idioma inglês:The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

Ele é compilado em um arquivo binary. Resources chamado GreetingStrings. Resources usando o gerador de arquivo de recursos com o comando a seguir.It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

O seguinte arquivo de texto chamado GreetingStrings.ru-RU.txt contém os recursos de idioma russo:The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

greeting=Еще раз привет!  
newGreeting=Привет!  

Ele é compilado em um arquivo binary. Resources chamado GreetingStrings.ru-RU. Resources usando o gerador do arquivo de recursos com o comando a seguir.It is compiled to a binary .resources file named GreetingStrings.ru-RU.resources by using the Resource File Generator with the following command.

resgen greetingstrings.ru-RU.txt  

O código do aplicativo, que é mostrado abaixo, reside em um arquivo chamado example1. vb ou Example1.cs.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Ele é compilado em um executável usando o seguinte comando para o compilador de Visual Basic:It is compiled to an executable by using the following command for the Visual Basic compiler:

vbc Example1.vb /resource:GreetingStrings.resources  

Para o compilador C#, o comando é semelhante:For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

Isso cria um assembly que inclui o código executável do exemplo junto com os recursos para sua cultura de fallback.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. Você também pode usar o vinculador de assembly para criar o arquivo de recurso para a cultura russa (Rússia) com o seguinte comando:You can also use the Assembly Linker to create the resource file for the Russian (Russia) culture with the following command:

>al /embed:greetingstrings.ru-RU.resources /c:ru-RU /template:example1.exe /out:ru-RU\Example1.resources.dll  

Na inicialização, o exemplo define a cultura atual e a cultura da interface do usuário atual como russo (Rússia) em todos os sistemas, exceto aquelas em que a cultura do sistema padrão já é russo (Rússia).At startup, the example sets the current culture and the current UI culture to Russian (Russia) on all systems except those on which the default system culture is already Russian (Russia). Se a cultura do sistema padrão já for russo (Rússia), o código definirá a cultura atual e a cultura da interface do usuário atual como Inglês (Estados Unidos).If the default system culture is already Russian (Russia), the code sets the current culture and the current UI culture to English (United States). Em seguida, ele chama a ShowGreeting rotina, que exibe uma cadeia de caracteres simples na primeira vez que é chamada e uma cadeia de caracteres ligeiramente diferente em chamadas de método subsequentes.It then calls the ShowGreeting routine, which displays a simple string the first time it is called and a slightly different string on subsequent method calls. Em seguida, ele cria um novo thread, que também executa a ShowGreeting rotina.Next, it creates a new thread, which also executes the ShowGreeting routine.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   private static int nGreetings = 0;
   private static ResourceManager rm;

   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      rm = new ResourceManager("GreetingStrings",
                               typeof(Example).Assembly);

      CultureInfo culture = null;
      if (Thread.CurrentThread.CurrentUICulture.Name == "ru-RU")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("ru-RU");

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;

      ShowGreeting();
      Thread.Sleep(1000);

      Thread workerThread = new Thread(Example.ShowGreeting);
      workerThread.Start();
   }

   private static void ShowGreeting()
   {
      string greeting = nGreetings == 0 ? rm.GetString("newGreeting") :
                                          rm.GetString("greeting");
      nGreetings++;
      Console.WriteLine("{0}", greeting);
   }
}
// The example displays the following output:
//       Привет!
//       Hello again!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguageAttribute("en-US")>

Public Class Example
   Private Shared nGreetings As Integer = 0
   Private Shared rm As ResourceManager

   Public Shared Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      rm = New ResourceManager("GreetingStrings", 
                               GetType(Example).Assembly)
                  
      Dim culture As CultureInfo = Nothing
      If Thread.CurrentThread.CurrentUICulture.Name = "ru-RU" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("ru-RU")
      End If   
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture

      ShowGreeting()
      Thread.Sleep(1000)

      Dim workerThread As New Thread(AddressOf Example.ShowGreeting)
      workerThread.Start()
   End Sub
   
   Private Shared Sub ShowGreeting()
      Dim greeting As String = CStr(IIf(nGreetings = 0, 
                                        rm.GetString("newGreeting"),
                                        rm.GetString("greeting")))
      nGreetings += 1
      Console.WriteLine("{0}", greeting)   
   End Sub
End Class
' The example displays the following output:
'       Привет!
'       Hello again!

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 sua cadeia de caracteres inicial em Russo.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 initial string in Russian. No entanto, como a cultura do thread de trabalho é derivada da cultura de sistema do Windows atual em vez da cultura atual do aplicativo, o thread de trabalho exibe sua cadeia de caracteres em inglês.However, because the worker thread's culture is derived from the current Windows system culture rather than the application's current culture, the worker thread displays its string in English.

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.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread.

O exemplo usa os mesmos arquivos de recursos do exemplo anterior.The example uses the same resources files as the previous example. Os comandos para compilar e inserir os recursos de idioma russo localizados em um assembly satélite também são idênticos, exceto pelo fato de o nome do assembly executável ser alterado.The commands to compile and to embed the localized Russian language resources into a satellite assembly are also identical, except that the name of the executable assembly changes.

Na inicialização, o exemplo define a cultura atual e a cultura da interface do usuário atual como russo (Rússia) em todos os sistemas, exceto aquelas em que a cultura do sistema padrão já é russo (Rússia).At startup, the example sets the current culture and the current UI culture to Russian (Russia) on all systems except those on which the default system culture is already Russian (Russia). Se a cultura do sistema padrão já for russo (Rússia), ela definirá a cultura atual e a cultura da interface do usuário atual como Inglês (Estados Unidos).If the default system culture is already Russian (Russia), it sets the current culture and the current UI culture to English (United States). Em seguida, ele chama a ShowGreeting rotina, que exibe uma cadeia de caracteres simples na primeira vez que é chamada e uma cadeia de caracteres ligeiramente diferente em chamadas de método subsequentes.It then calls the ShowGreeting routine, which displays a simple string the first time it is called and a slightly different string on subsequent method calls. Em seguida, ele cria um novo thread, que também executa a ShowGreeting rotina.Next, it creates a new thread, which also executes the ShowGreeting routine.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   private static int nGreetings = 0;
   private static ResourceManager rm;

   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      rm = new ResourceManager("GreetingStrings",
                               typeof(Example).Assembly);

      CultureInfo culture = null;
      if (Thread.CurrentThread.CurrentUICulture.Name == "ru-RU")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("ru-RU");

      CultureInfo.DefaultThreadCurrentCulture = culture;
      CultureInfo.DefaultThreadCurrentUICulture = culture;

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;

      ShowGreeting();
      Thread.Sleep(1000);

      Thread workerThread = new Thread(Example.ShowGreeting);
      workerThread.Start();
   }

   private static void ShowGreeting()
   {
      string greeting = nGreetings == 0 ? rm.GetString("newGreeting") :
                                          rm.GetString("greeting");
      nGreetings++;
      Console.WriteLine("{0}", greeting);
   }
}
// The example displays the following output:
//       Привет!
//       Еще раз привет!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguageAttribute("en-US")>

Public Class Example
   Private Shared nGreetings As Integer = 0
   Private Shared rm As ResourceManager

   Public Shared Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      rm = New ResourceManager("GreetingStrings", 
                               GetType(Example).Assembly)
                  
      Dim culture As CultureInfo = Nothing
      If Thread.CurrentThread.CurrentUICulture.Name = "ru-RU" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("ru-RU")
      End If   
      CultureInfo.DefaultThreadCurrentCulture = culture
      CultureInfo.DefaultThreadCurrentUICulture = culture
       
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture

      ShowGreeting()
      Thread.Sleep(1000)

      Dim workerThread As New Thread(AddressOf Example.ShowGreeting)
      workerThread.Start()
   End Sub
   
   Private Shared Sub ShowGreeting()
      Dim greeting As String = CStr(IIf(nGreetings = 0, 
                                        rm.GetString("newGreeting"),
                                        rm.GetString("greeting")))
      nGreetings += 1
      Console.WriteLine("{0}", greeting)   
   End Sub
End Class
' The example displays the following output:
'       Привет!
'       Еще раз привет!

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 suas cadeias de caracteres no idioma russo.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 strings in the Russian language.

Comentários

No .NET Framework 4.NET Framework 4 e versões anteriores, por padrão, a cultura da interface do usuário de todos os threads é definida como a cultura do sistema do Windows.In the .NET Framework 4.NET Framework 4 and previous versions, by default, the UI culture of all threads is set to the Windows system culture. Para aplicativos cuja cultura da interface do usuário atual difere da cultura do sistema padrão, esse comportamento geralmente é indesejável.For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. No .NET Framework 4.5.NET Framework 4.5 , a DefaultThreadCurrentUICulture propriedade permite que você defina a cultura da interface do usuário padrão de todos os threads em um domínio de aplicativo.In the .NET Framework 4.5.NET Framework 4.5, the DefaultThreadCurrentUICulture property lets you define the default UI culture of all threads in an application domain.

Importante

Se você não definiu explicitamente a cultura da interface do usuário de quaisquer threads existentes em execução em um domínio de aplicativo, a definição da DefaultThreadCurrentUICulture propriedade também alterará a cultura desses threads.If you have not explicitly set the UI culture of any existing threads executing in an application domain, setting the DefaultThreadCurrentUICulture property also changes the culture of these threads. No entanto, se esses threads forem executados em outro domínio de aplicativo, sua cultura será definida pela DefaultThreadCurrentUICulture Propriedade nesse domínio de aplicativo ou, se nenhum valor padrão for definido, pela cultura de sistema padrão.However, if these threads execute in another application domain, their culture is defined by the DefaultThreadCurrentUICulture property in that application domain or, if no default value is defined, by the default system culture. Por isso, é recomendável que você sempre defina explicitamente a cultura do seu thread de aplicativo principal e não confie na DefaultThreadCurrentUICulture propriedade para definir a cultura do thread do aplicativo principal.Because of this, we recommend that you always explicitly set the culture of your main application thread and do not rely on the DefaultThreadCurrentUICulture property to define the culture of the main application thread.

A menos que seja definido explicitamente, o valor da DefaultThreadCurrentUICulture propriedade é null , e a cultura atual de todos os 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 do Windows.Unless it is set explicitly, the value of the DefaultThreadCurrentUICulture property is null, and the current culture of all threads in an application domain that have not been assigned an explicit culture is defined by the default Windows system culture.

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.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.

Aplica-se a

Confira também