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 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à
Impostazioni cultura predefinite per i thread nel dominio applicazione corrente o null se le impostazioni cultura di sistema correnti sono le impostazioni cultura del thread predefinite nel dominio 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à francese (Francia), il codice imposta le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente 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 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 i 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 di sistema di 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 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à francese (Francia), imposta le impostazioni cultura correnti e le impostazioni cultura correnti dell'interfaccia utente 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, in .NET Framework 4 e nelle versioni precedenti le impostazioni cultura di tutti i thread sono impostate sulle impostazioni cultura di sistema di 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 applicazione.
Importante
Se non sono state impostate in modo esplicito le impostazioni cultura di qualsiasi thread esistente in esecuzione in un dominio 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 vengono definite dalla proprietà nel dominio applicazione o, se non è definito alcun valore predefinito, dalle impostazioni cultura di sistema predefinite. Per questo motivo, è consigliabile impostare sempre in modo esplicito le impostazioni cultura del thread dell'applicazione principale e non basarsi sulla DefaultThreadCurrentCulture 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à è nulle le impostazioni cultura dei thread in un dominio applicazione a cui non sono state assegnate impostazioni cultura esplicite vengono definite dalle impostazioni cultura predefinite del sistema windows.
Per altre informazioni su impostazioni cultura, thread e domini applicazione, vedere le sezioni "Impostazioni cultura e thread" e "Domini cultura e applicazione" nella pagina di CultureInfo riferimento.