CultureInfo.DefaultThreadCurrentUICulture Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta le impostazioni cultura predefinite dell'interfaccia utente per i thread nel dominio dell'applicazione corrente.
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
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.
Eccezioni
In un'operazione set il valore della proprietà Name non è valido.
Esempio
Nell'esempio seguente viene illustrato il comportamento predefinito del .NET Framework nella definizione delle impostazioni cultura correnti di un nuovo thread. Usa le risorse in lingua inglese e russo. Il file di testo seguente denominato GreetingStrings.txt contiene le risorse della lingua inglese:
greeting =Hello again!
newGreeting=Hello!
Viene compilato in un file binario con estensione resources denominato GreetingStrings.resources usando il generatore di file di risorse con il comando seguente.
resgen greetingstrings.txt
Il file di testo seguente denominato GreetingStrings.ru-RU.txt contiene le risorse della lingua russa:
greeting=Еще раз привет!
newGreeting=Привет!
Viene compilato in un file binario con estensione resources denominato GreetingStrings.ru-RU.resources usando il generatore di file di risorse con il comando seguente.
resgen greetingstrings.ru-RU.txt
Il codice dell'applicazione, illustrato di seguito, si trova in un file denominato Example1.vb o Example1.cs. Viene compilato in un eseguibile usando il comando seguente per il Visual Basic seguente:
vbc Example1.vb /resource:GreetingStrings.resources
Per il compilatore C#, il comando è simile al seguente:
csc /resource:GreetingStrings.resources Example1.cs
Verrà creato un assembly che include il codice eseguibile dell'esempio insieme alle risorse per le impostazioni cultura di fallback. È anche possibile usare Assembly Linker per creare il file di risorse per le impostazioni cultura russo (Russia) con il comando seguente:
>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 correnti dell'interfaccia utente sul russo (Russia) in tutti i sistemi ad eccezione di quelli in cui le impostazioni cultura di sistema predefinite sono già russo (Russia). Se le impostazioni cultura di sistema predefinite sono già il russo (Russia), il codice imposta le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente sull'inglese (Stati Uniti). Chiama quindi la routine , che visualizza una stringa semplice la prima volta che viene chiamata e una stringa leggermente diversa ShowGreeting
nelle chiamate al metodo successive. Successivamente, crea un nuovo thread, che esegue anche la 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 l'esempio viene eseguito in un computer le cui impostazioni cultura di sistema sono inglese (Stati Uniti), il thread principale visualizza la stringa iniziale in russo. Tuttavia, poiché le impostazioni cultura del thread di lavoro derivano dalle impostazioni cultura di sistema Windows correnti anziché dalle impostazioni cultura correnti dell'applicazione, il thread di lavoro visualizza la stringa in inglese.
Nell'esempio seguente vengono utilizzate le proprietà e per definire le impostazioni cultura correnti e le impostazioni DefaultThreadCurrentCulture cultura correnti dell'interfaccia utente di un nuovo thread DefaultThreadCurrentUICulture dell'applicazione.
Nell'esempio vengono utilizzati gli stessi file di risorse dell'esempio precedente. Anche i comandi per compilare e incorporare le risorse della lingua russo localizzate in un assembly satellite sono identici, ad eccezione del fatto che il nome dell'assembly eseguibile cambia.
All'avvio, l'esempio imposta le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente sul russo (Russia) in tutti i sistemi ad eccezione di quelli in cui le impostazioni cultura di sistema predefinite sono già russo (Russia). Se le impostazioni cultura di sistema predefinite sono già russo (Russia), imposta le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente sull'inglese (Stati Uniti). Chiama quindi la routine , che visualizza una stringa semplice la prima volta che viene chiamata e una stringa leggermente diversa ShowGreeting
nelle chiamate al metodo successive. Successivamente, crea un nuovo thread, che esegue anche la 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 l'esempio viene eseguito in un computer le cui impostazioni cultura di sistema sono inglese (Stati Uniti), sia il thread principale che il thread di lavoro visualizzano le stringhe nella lingua russa.
Commenti
Nella versione .NET Framework 4 e versioni precedenti, per impostazione predefinita, le impostazioni cultura dell'interfaccia utente di tutti i thread sono impostate sulle impostazioni cultura Windows di sistema. Per le applicazioni le cui impostazioni cultura correnti dell'interfaccia utente sono diverse dalle impostazioni cultura predefinite del sistema, questo comportamento è spesso indesiderato. Nella versione .NET Framework 4.5, la proprietà consente di definire le impostazioni cultura predefinite dell'interfaccia utente DefaultThreadCurrentUICulture di tutti i thread in un dominio applicazione.
Importante
Se non sono state impostate in modo esplicito le impostazioni cultura dell'interfaccia utente di tutti i thread esistenti in esecuzione in un dominio applicazione, l'impostazione della proprietà modifica anche le DefaultThreadCurrentUICulture impostazioni cultura di questi thread. Tuttavia, se questi thread vengono eseguiti in un altro dominio applicazione, le relative impostazioni cultura vengono definite dalla proprietà nel dominio applicazione o, se non è definito alcun valore predefinito, dalle impostazioni cultura di DefaultThreadCurrentUICulture sistema predefinite. Per questo motivo, è consigliabile impostare sempre in modo esplicito le impostazioni cultura del thread dell'applicazione principale e non basarsi sulla proprietà per definire le impostazioni cultura del DefaultThreadCurrentUICulture thread dell'applicazione principale.
A meno che non sia impostato in modo esplicito, il valore della proprietà è e le impostazioni cultura correnti di tutti i thread in un dominio applicazione a cui non sono state assegnate impostazioni cultura esplicite vengono definite dalle impostazioni cultura di sistema Windows DefaultThreadCurrentUICulture null
predefinite.
Per altre informazioni su impostazioni cultura, thread e domini applicazione, vedere le sezioni "Impostazioni cultura e thread" e "Impostazioni cultura e domini applicazione" nella pagina CultureInfo di riferimento.