CultureInfo.DefaultThreadCurrentCulture Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.