Partager via


CultureInfo.DefaultThreadCurrentCulture Propriété

Définition

Obtient ou définit la culture par défaut pour les threads dans le domaine d'application actuel.

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

Valeur de propriété

Culture par défaut pour les threads dans le domaine d'application actuel, ou null si la culture du système actuelle est la culture du thread par défaut dans le domaine d'application.

Exemples

L’exemple suivant illustre le comportement par défaut du .NET Framework dans la définition de la culture actuelle d’un nouveau thread. Au démarrage, l’exemple définit la culture actuelle et la culture d’interface utilisateur actuelle sur Français (France) sur tous les systèmes à l’exception de ceux sur lesquels la culture système par défaut est déjà Français (France). Si la culture système par défaut est déjà Français (France), le code définit la culture actuelle et la culture de l’interface utilisateur actuelle sur l’anglais (États-Unis). Il appelle ensuite la DisplayRandomNumbers routine, qui génère trois nombres aléatoires et les affiche sous forme de valeurs monétaires. Ensuite, il crée un thread, qui exécute également 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

Comme le montre la sortie de l’exemple, lorsque l’exemple est exécuté sur un ordinateur dont la culture système est l’anglais (États-Unis), le thread main affiche ses valeurs monétaires à l’aide des conventions de mise en forme de la culture Français (France). Toutefois, étant donné que la culture du thread de travail est dérivée de la culture système Windows actuelle plutôt que de la culture actuelle de l’application, le thread de travail affiche ses valeurs monétaires à l’aide des conventions de mise en forme de la culture anglaise (États-Unis).

L’exemple suivant utilise les DefaultThreadCurrentCulture propriétés et DefaultThreadCurrentUICulture pour définir la culture actuelle et la culture d’interface utilisateur actuelle d’un nouveau thread d’application. Au démarrage, l’exemple définit la culture actuelle et la culture d’interface utilisateur actuelle sur Français (France) sur tous les systèmes à l’exception de ceux sur lesquels la culture système par défaut est déjà Français (France). Si la culture système par défaut est déjà Français (France), elle définit la culture actuelle et la culture de l’interface utilisateur actuelle sur anglais (États-Unis). Il appelle ensuite la DisplayRandomNumbers routine, qui génère trois nombres aléatoires et les affiche sous forme de valeurs monétaires. Ensuite, il crée un thread, qui exécute également 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 €

Comme le montre la sortie de l’exemple, lorsque l’exemple est exécuté sur un ordinateur dont la culture système est l’anglais (États-Unis), le thread main et le thread de travail affichent leurs valeurs monétaires à l’aide des conventions de mise en forme de la culture Français (France).

Remarques

Dans .NET Framework 4 et les versions antérieures, par défaut, la culture de tous les threads est définie sur la culture système Windows. Pour les applications dont la culture actuelle diffère de la culture système par défaut, ce comportement n’est souvent pas souhaitable. Dans .NET Framework 4.5, la DefaultThreadCurrentCulture propriété permet à une application de définir la culture par défaut de tous les threads d’un domaine d’application.

Important

Si vous n’avez pas défini explicitement la culture des threads existants qui s’exécutent dans un domaine d’application, la définition de la DefaultThreadCurrentCulture propriété modifie également la culture de ces threads. Toutefois, si ces threads s’exécutent dans un autre domaine d’application, leur culture est définie par la DefaultThreadCurrentCulture propriété dans ce domaine d’application ou, si aucune valeur par défaut n’est définie, par la culture système par défaut. Pour cette raison, nous vous recommandons de toujours définir explicitement la culture de votre thread d’application main et de ne pas vous appuyer sur la DefaultThreadCurrentCulture propriété pour définir la culture du thread d’application main.

Sauf si elle est définie explicitement, la valeur de la DefaultThreadCurrentCulture propriété est null, et la culture des threads dans un domaine d’application qui n’ont pas été affectés à une culture explicite est définie par la culture système Windows par défaut.

Pour plus d’informations sur les cultures, les threads et les domaines d’application, consultez les sections « Culture et threads » et « Domaines de culture et d’application » dans la CultureInfo page de référence.

S’applique à

Voir aussi