Condividi tramite


CultureInfo.DefaultThreadCurrentCulture Proprietà

Definizione

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.

Si applica a

Vedi anche