CultureInfo.DefaultThreadCurrentCulture Proprietà

Definizione

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'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 relativi valori di valuta usando le convenzioni di formattazione delle impostazioni cultura francese (Francia). Tuttavia, poiché le impostazioni cultura del thread di lavoro sono derivate 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 dall'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à è nulle 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, i thread e i domini dell'applicazione, vedere le sezioni "Impostazioni cultura e thread" e "Domini cultura e applicazioni" nella CultureInfo pagina di riferimento.

Si applica a

Vedi anche