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; }
member this.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 de la .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 dont la culture système par défaut est déjà français (France). Si la culture système par défaut est déjà en français (France), le code définit la culture actuelle et la culture d’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 nouveau 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, quand l’exemple est exécuté sur un ordinateur dont la culture système est l’anglais (États-Unis), le thread principal 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 actuelle Windows 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 anglais (États-Unis).
L’exemple suivant utilise les DefaultThreadCurrentCulture DefaultThreadCurrentUICulture Propriétés et 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 dont la culture système par défaut est déjà français (France). Si la culture système par défaut est déjà en français (France), elle définit la culture actuelle et la culture d’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 nouveau 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, quand l’exemple est exécuté sur un ordinateur dont la culture du système est l’anglais (États-Unis), le thread principal 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 les versions .NET Framework 4 et précédentes, par défaut, la culture de tous les threads est définie sur la culture du système Windows. Pour les applications dont la culture actuelle diffère de la culture système par défaut, ce comportement est souvent indésirable. dans la .NET Framework 4,5, la DefaultThreadCurrentCulture propriété permet à une application de définir la culture par défaut de tous les threads dans un domaine d’application.
Important
Si vous n’avez pas défini explicitement la culture de tous les threads existants s’exécutant dans un domaine d’application, la définition DefaultThreadCurrentCulture de la 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 principal et de ne pas compter sur la DefaultThreadCurrentCulture propriété pour définir la culture du thread d’application principal.
à moins qu’il ne soit défini explicitement, la valeur de la DefaultThreadCurrentCulture propriété est null
, et la culture de threads dans un domaine d’application auxquels aucune culture explicite n’a été affectée est définie par la culture système par défaut Windows.
Pour plus d’informations sur les cultures, les threads et les domaines d’application, consultez les sections « culture et threads » et « cultures et domaines d’application » dans la CultureInfo page de référence.