CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture Property

Definición

Obtiene o establece la referencia cultural predeterminada de la interfaz de usuario para los subprocesos del dominio de aplicación actual.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; }
member this.DefaultThreadCurrentUICulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentUICulture As CultureInfo

Valor de propiedad

Referencia cultural de la interfaz de usuario predeterminada para los subprocesos del dominio de aplicación actual, o null si la referencia cultural de la interfaz de usuario actual del sistema es la referencia cultural de la interfaz de usuario predeterminada del subproceso en el dominio de aplicación.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.

Excepciones

En una operación de conjunto, el valor de la propiedad Name no es válido.In a set operation, the Name property value is invalid.

Ejemplos

El ejemplo siguiente muestra el comportamiento predeterminado de .NET Framework en la definición de la referencia cultural actual de un nuevo subproceso.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. Usa los recursos de idioma inglés y ruso.It uses English and Russian language resources. El siguiente archivo de texto denominado GreetingStrings.txt contiene los recursos de idioma inglés:The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

Se compila en un archivo .resources binario denominado GreetingStrings.resources mediante el Resource File Generator con el siguiente comando.It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

El siguiente archivo de texto denominado GreetingStrings.ru-RU. txt contiene los recursos de idioma ruso:The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

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

Se compila en un archivo .resources binario denominado GreetingStrings.ru RU.resources mediante el Resource File Generator con el siguiente comando.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  

El código de aplicación, que se muestra a continuación, se encuentra en un archivo denominado Example1.cs o Example1.vb.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Se compila en un ejecutable mediante el comando siguiente para el 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 el compilador de C#, el comando es similar:For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

Esto crea un ensamblado que incluye código ejecutable del ejemplo junto con los recursos para su referencia cultural de reserva.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. También puede usar el Assembly Linker para crear el archivo de recursos para la referencia cultural de ruso (Rusia) con el siguiente 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  

Al iniciarse, el ejemplo establece la referencia cultural actual y la referencia cultural de interfaz de usuario actual en ruso (Rusia) en todos los sistemas, excepto aquellos en los que la referencia cultural predeterminada del sistema ya es el rusa (Rusia).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). Si la referencia cultural predeterminada del sistema está ruso (Rusia), el código establece la referencia cultural actual y la interfaz de usuario actual de la referencia cultural para 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). A continuación, llama el ShowGreeting rutina, que muestra una cadena simple, la primera vez que se llama y una cadena ligeramente diferente en llamadas posteriores a métodos.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. A continuación, crea un nuevo subproceso, que también ejecuta el ShowGreeting rutina.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 muestra el resultado del ejemplo, cuando se ejecuta el ejemplo en un equipo cuya referencia cultural del sistema es inglés (Estados Unidos), el subproceso principal muestra la cadena inicial en ruso.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. Sin embargo, porque la referencia cultural del subproceso de trabajo se deriva de la referencia cultural actual del sistema de Windows en lugar de la referencia cultural actual de la aplicación, el subproceso de trabajo muestra la cadena en 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.

En el ejemplo siguiente se usa el DefaultThreadCurrentCulture y DefaultThreadCurrentUICulture las propiedades para definir la referencia cultural actual y la actual referencia cultural de interfaz de usuario de un nuevo subproceso de aplicación.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread.

El ejemplo utiliza los mismos archivos de recursos que el ejemplo anterior.The example uses the same resources files as the previous example. Los comandos para compilar e incrustar los recursos de idioma ruso localizado en un ensamblado satélite también son idénticos, salvo que cambia el nombre del ensamblado ejecutable.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.

Al iniciarse, el ejemplo establece la referencia cultural actual y la referencia cultural de interfaz de usuario actual en ruso (Rusia) en todos los sistemas, excepto aquellos en los que la referencia cultural predeterminada del sistema ya es el rusa (Rusia).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). Si la referencia cultural predeterminada del sistema ya es el rusa (Rusia), Establece la referencia cultural actual y la referencia cultural de interfaz de usuario actual en 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). A continuación, llama el ShowGreeting rutina, que muestra una cadena simple, la primera vez que se llama y una cadena ligeramente diferente en llamadas posteriores a métodos.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. A continuación, crea un nuevo subproceso, que también ejecuta el ShowGreeting rutina.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 muestra el resultado del ejemplo, cuando se ejecuta el ejemplo en un equipo cuya referencia cultural del sistema es inglés (Estados Unidos), el subproceso principal y el subproceso de trabajo muestran sus cadenas en ruso.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.

Comentarios

En el .NET Framework 4.NET Framework 4 y versiones anteriores, de forma predeterminada, se establece la referencia cultural de interfaz de usuario de todos los subprocesos en la referencia cultural del sistema de 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 las aplicaciones cuya referencia cultural de interfaz de usuario actual difiere de la referencia cultural del sistema de forma predeterminada, este comportamiento suele ser deseable.For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. En el .NET Framework 4.5.NET Framework 4.5, el DefaultThreadCurrentUICulture propiedad le permite definir la referencia cultural de interfaz de usuario predeterminada de todos los subprocesos en un dominio de aplicación.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

Si no estableció explícitamente la referencia cultural de interfaz de usuario de cualquier existente subprocesos que se ejecutan en un dominio de aplicación, establecer el DefaultThreadCurrentUICulture propiedad también cambia la referencia cultural de estos subprocesos.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. Sin embargo, si estos subprocesos se ejecutan en otro dominio de aplicación, su referencia cultural se define mediante el DefaultThreadCurrentUICulture propiedad en ese dominio de aplicación o bien, si no se define ningún valor predeterminado, mediante la referencia cultural predeterminada del sistema.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 este motivo, recomendamos que siempre explícitamente establecer la referencia cultural del subproceso principal de la aplicación de y no confíe en el DefaultThreadCurrentUICulture propiedad para definir la referencia cultural del subproceso principal de la aplicación.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 se establecen explícitamente, el valor de la DefaultThreadCurrentUICulture propiedad es null, y la referencia cultural de todos los subprocesos en un dominio de aplicación que no se ha asignado una referencia cultural explícita se define mediante la referencia cultural del sistema de Windows de forma predeterminada.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 obtener más información acerca de las referencias culturales, subprocesos y dominios de aplicación, vea "referencia cultural y los subprocesos" y "referencia cultural y los dominios de aplicación" secciones en el CultureInfo página de referencia.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.

Se aplica a

Consulte también: