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

Definizione

Ottiene o imposta le impostazioni cultura predefinite dell'interfaccia utente per i thread nel dominio dell'applicazione corrente.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

Valore della proprietà

Impostazioni cultura dell'interfaccia utente predefinite per i thread nel dominio dell'applicazione corrente oppure null se le impostazioni cultura dell'interfaccia utente correnti del sistema sono le impostazioni cultura dell'interfaccia utente predefinite per i thread nel dominio dell'applicazione.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.

Eccezioni

In un'operazione set il valore della proprietà Name non è valido.In a set operation, the Name property value is invalid.

Esempi

L'esempio seguente illustra il comportamento predefinito di .NET Framework nella definizione delle impostazioni cultura correnti di un nuovo thread.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. Usa le risorse della lingua inglese e russa.It uses English and Russian language resources. Il seguente file di testo denominato GreetingStrings.txt contiene le risorse di lingua inglese:The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

Viene compilato in un file. Resources binario denominato GreetingStrings.resources usando il Resource File Generator con il comando seguente.It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

Il seguente file di testo denominato GreetingStrings.ru-RU. txt contiene le risorse di lingua russa:The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

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

Viene compilato in un file. Resources binario denominato GreetingStrings.ru RU.resources usando il Resource File Generator con il comando seguente.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  

Il codice dell'applicazione, mostrata di seguito, si trova in un file denominato Example1.cs o Example1.vb.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Per un file eseguibile viene compilato usando il comando seguente per il compilatore Visual Basic:It is compiled to an executable by using the following command for the Visual Basic compiler:

vbc Example1.vb /resource:GreetingStrings.resources  

Per il compilatore c#, il comando è simile:For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

Ciò consente di creare un assembly che include codice eseguibile dell'esempio con le risorse per le impostazioni cultura di fallback.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. È anche possibile usare la Assembly Linker per creare il file di risorse per le impostazioni cultura russe (Russia) con il comando seguente: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  

All'avvio, l'esempio imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su russe (Russia) in tutti i sistemi tranne quelli in cui la lingua predefinita è già russa (Russia).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 la lingua predefinita è già russe (Russia), il codice imposta le impostazioni cultura correnti e l'interfaccia utente corrente delle impostazioni cultura per inglese (Stati Uniti).If the default system culture is already Russian (Russia), the code sets the current culture and the current UI culture to English (United States). Chiama quindi il ShowGreeting routine, che consente di visualizzare una semplice stringa la prima volta che viene chiamato e una stringa leggermente diversa in successive chiamate al metodo.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. Successivamente, crea un nuovo thread, anche l'esecuzione di ShowGreeting routine.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!

Come illustrato nell'output dell'esempio, quando nell'esempio viene eseguito in un computer le cui impostazioni cultura del sistema è l'inglese (Stati Uniti), il thread principale consente di visualizzare la relativa stringa iniziale in 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. Tuttavia, perché le impostazioni cultura del thread di lavoro sono derivata da impostazioni cultura correnti del sistema Windows anziché a impostazioni cultura correnti dell'applicazione, il thread di lavoro consente di visualizzare la relativa stringa in lingua inglese.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.

L'esempio seguente usa il DefaultThreadCurrentCulture e DefaultThreadCurrentUICulture proprietà per definire le impostazioni cultura correnti e impostazioni cultura correnti dell'interfaccia utente di un nuovo thread dell'applicazione.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread.

L'esempio Usa gli stessi file di risorse dell'esempio precedente.The example uses the same resources files as the previous example. I comandi per compilare e incorporare le risorse di lingua russa localizzata in un assembly satellite anche sono identici, ad eccezione del fatto che viene modificato il nome dell'assembly eseguibile.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.

All'avvio, l'esempio imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su russe (Russia) in tutti i sistemi tranne quelli in cui la lingua predefinita è già russa (Russia).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 la lingua predefinita è già russa (Russia), imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su inglese (Stati Uniti).If the default system culture is already Russian (Russia), it sets the current culture and the current UI culture to English (United States). Chiama quindi il ShowGreeting routine, che consente di visualizzare una semplice stringa la prima volta che viene chiamato e una stringa leggermente diversa in successive chiamate al metodo.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. Successivamente, crea un nuovo thread, anche l'esecuzione di ShowGreeting routine.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:
'       Привет!
'       Еще раз привет!

Come illustrato nell'output dell'esempio, quando nell'esempio viene eseguito in un computer le cui impostazioni cultura del sistema è l'inglese (Stati Uniti), il thread principale sia il thread di lavoro visualizzare le relative stringhe in lingua russa.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.

Commenti

Nel .NET Framework 4.NET Framework 4 e versioni precedenti, per impostazione predefinita, le impostazioni cultura dell'interfaccia utente di tutti i thread sono impostata su impostazioni cultura del sistema di 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. Per le applicazioni le cui impostazioni cultura dell'interfaccia utente corrente è diverso da impostazioni cultura del sistema predefinita, questo comportamento è spesso indesiderato.For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. Nel .NET Framework 4.5.NET Framework 4.5, il DefaultThreadCurrentUICulture proprietà consente di definire le impostazioni cultura dell'interfaccia utente predefinita di tutti i thread in un dominio applicazione.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 non è stato impostato in modo esplicito le impostazioni cultura dell'interfaccia utente di tutte le classi esistenti thread in esecuzione in un dominio dell'applicazione, l'impostazione di DefaultThreadCurrentUICulture cambia anche le impostazioni cultura del thread di queste proprietà.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. Tuttavia, se questi thread eseguiti in un altro dominio applicazione, le impostazioni cultura viene definita dal DefaultThreadCurrentUICulture proprietà in tale dominio dell'applicazione o, se non è definito alcun valore predefinito, dalle impostazioni cultura del sistema predefinito.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. Per questo motivo, si consiglia di configurare le impostazioni cultura del thread principale dell'applicazione sempre in modo esplicito e non basarsi su di DefaultThreadCurrentUICulture proprietà per definire le impostazioni cultura del thread principale dell'applicazione.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.

Se non è impostata in modo esplicito, il valore della DefaultThreadCurrentUICulture è di proprietà null, e le impostazioni cultura correnti di tutti i thread in un dominio dell'applicazione che non sono stati assegnati di impostazioni cultura esplicite sono definita da impostazioni cultura del sistema di Windows predefinita.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.

Per altre informazioni sulle impostazioni cultura, thread e i domini applicazione, vedere "impostazioni cultura e thread" e "impostazioni cultura e i domini applicazione" sezioni nel CultureInfo pagina di riferimento.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.

Si applica a

Vedi anche