CultureInfo.DefaultThreadCurrentCulture 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 per i thread nel dominio dell'applicazione corrente.
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; }
static member DefaultThreadCurrentCulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentCulture As CultureInfo
Valore della proprietà
Le impostazioni cultura predefinite dei thread nel dominio dell'applicazione corrente o null
se le impostazioni cultura correnti del sistema sono le impostazioni cultura predefinite del thread nel dominio dell'applicazione.
Esempio
Nell'esempio seguente viene illustrato il comportamento predefinito di .NET Framework nella definizione delle impostazioni cultura correnti di un nuovo thread. All'avvio, l'esempio imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su francese (Francia) su tutti i sistemi, ad eccezione di quelli in cui le impostazioni cultura di sistema predefinite sono già francesi (Francia). Se le impostazioni cultura di sistema predefinite sono già francesi (Francia), il codice imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su inglese (Stati Uniti). Chiama quindi la DisplayRandomNumbers
routine, che genera tre numeri casuali e li visualizza come valori di valuta. Successivamente, crea un nuovo thread, che esegue anche la DisplayRandomNumbers
routine.
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
Come illustrato dall'esempio, quando l'esempio viene eseguito in un computer le cui impostazioni cultura di sistema sono inglese (Stati Uniti), il thread principale visualizza i relativi valori di valuta usando le convenzioni di formattazione delle impostazioni cultura francese (Francia). Tuttavia, poiché le impostazioni cultura del thread di lavoro derivano dalle impostazioni cultura correnti del sistema Windows anziché dalle impostazioni cultura correnti dell'applicazione, il thread di lavoro visualizza i valori di valuta usando le convenzioni di formattazione delle impostazioni cultura inglese (Stati Uniti).
Nell'esempio seguente vengono usate le DefaultThreadCurrentCulture proprietà e DefaultThreadCurrentUICulture per definire le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente di un nuovo thread dell'applicazione. All'avvio, l'esempio imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su francese (Francia) su tutti i sistemi, ad eccezione di quelli in cui le impostazioni cultura di sistema predefinite sono già francesi (Francia). Se le impostazioni cultura di sistema predefinite sono già francesi (Francia), imposta le impostazioni cultura correnti e le impostazioni cultura dell'interfaccia utente correnti su inglese (Stati Uniti). Chiama quindi la DisplayRandomNumbers
routine, che genera tre numeri casuali e li visualizza come valori di valuta. Successivamente, crea un nuovo thread, che esegue anche la DisplayRandomNumbers
routine.
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 €
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 i valori di valuta usando le convenzioni di formattazione delle impostazioni cultura francese (Francia).
Commenti
Per impostazione predefinita, nelle versioni di .NET Framework 4 e precedenti, le impostazioni cultura di tutti i thread sono impostate sulle impostazioni cultura del sistema Windows. Per le applicazioni le cui impostazioni cultura correnti differiscono dalle impostazioni cultura predefinite del sistema, questo comportamento è spesso indesiderato. In .NET Framework 4.5 la DefaultThreadCurrentCulture proprietà consente a un'applicazione di definire le impostazioni cultura predefinite di tutti i thread in un dominio dell'applicazione.
Importante
Se non sono state impostate in modo esplicito le impostazioni cultura di qualsiasi thread esistente in esecuzione in un dominio dell'applicazione, l'impostazione della DefaultThreadCurrentCulture proprietà modifica anche le impostazioni cultura di questi thread. Tuttavia, se questi thread vengono eseguiti in un altro dominio applicazione, le DefaultThreadCurrentCulture impostazioni cultura sono definite dalla proprietà nel dominio dell'applicazione o, se non viene definito alcun valore predefinito, dalle impostazioni cultura di sistema predefinite. A causa di questo, è consigliabile impostare sempre in modo esplicito le impostazioni cultura del thread dell'applicazione principale e non basarsi DefaultThreadCurrentCulture sulla proprietà per definire le impostazioni cultura del thread dell'applicazione principale.
A meno che non sia impostato in modo esplicito, il valore della DefaultThreadCurrentCulture proprietà è null
e le impostazioni cultura dei thread in un dominio dell'applicazione che non sono state assegnate impostazioni cultura esplicite sono definite dalle impostazioni cultura predefinite del sistema Windows.
Per altre informazioni sulle impostazioni cultura, thread e domini applicazione, vedere le sezioni "Impostazioni cultura e thread" e "Domini cultura e applicazioni" nella CultureInfo pagina di riferimento.