CultureInfo.DefaultThreadCurrentCulture Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt de standaardcultuur voor threads in het huidige toepassingsdomein opgehaald of ingesteld.
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; }
static member DefaultThreadCurrentCulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentCulture As CultureInfo
Waarde van eigenschap
De standaardcultuur voor threads in het huidige toepassingsdomein of null als de huidige systeemcultuur de standaardthreadcultuur in het toepassingsdomein is.
Voorbeelden
In het volgende voorbeeld ziet u het standaardgedrag van het .NET Framework bij het definiëren van de huidige cultuur van een nieuwe thread. Bij het opstarten stelt het voorbeeld de huidige cultuur en de huidige UI-cultuur in op Frans (Frankrijk) op alle systemen, met uitzondering van de systemen waarop de standaardsysteemcultuur al Frans (Frankrijk) is. Als de standaardsysteemcultuur al Frans (Frankrijk) is, stelt de code de huidige cultuur en de huidige UI-cultuur in op Engels (Verenigde Staten). Vervolgens wordt de DisplayRandomNumbers routine aanroepen, waarmee drie willekeurige getallen worden gegenereerd en weergegeven als valutawaarden. Vervolgens wordt er een nieuwe thread gemaakt, die ook de DisplayRandomNumbers routine uitvoert.
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
Zoals de uitvoer uit het voorbeeld laat zien, geeft de hoofdthread de valutawaarden weer met behulp van de opmaakconventies van de Franse cultuur (Frankrijk) wanneer het voorbeeld wordt uitgevoerd op een computer waarvan de systeemcultuur Engels is (Verenigde Staten). Omdat de cultuur van de werkrolthread echter is afgeleid van de huidige Windows systeemcultuur in plaats van de huidige cultuur van de toepassing, geeft de werkthread de valutawaarden weer met behulp van de opmaakconventies van de Engelse cultuur (Verenigde Staten).
In het volgende voorbeeld worden de DefaultThreadCurrentCulture en DefaultThreadCurrentUICulture eigenschappen gebruikt om de huidige cultuur en de huidige UI-cultuur van een nieuwe toepassingsthread te definiëren. Bij het opstarten stelt het voorbeeld de huidige cultuur en de huidige UI-cultuur in op Frans (Frankrijk) op alle systemen, met uitzondering van de systemen waarop de standaardsysteemcultuur al Frans (Frankrijk) is. Als de standaardsysteemcultuur al Frans (Frankrijk) is, wordt de huidige cultuur en de huidige UI-cultuur ingesteld op Engels (Verenigde Staten). Vervolgens wordt de DisplayRandomNumbers routine aanroepen, waarmee drie willekeurige getallen worden gegenereerd en weergegeven als valutawaarden. Vervolgens wordt er een nieuwe thread gemaakt, die ook de DisplayRandomNumbers routine uitvoert.
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 €
Zoals de uitvoer uit het voorbeeld laat zien, geeft het voorbeeld op een computer waarvan de systeemcultuur Engels (Verenigde Staten) is, zowel de hoofdthread als de werkrolthread hun valutawaarden weer met behulp van de opmaakconventies van de Franse cultuur (Frankrijk).
Opmerkingen
In de .NET Framework 4- en vorige versies is de cultuur van alle threads standaard ingesteld op de Windows systeemcultuur. Voor toepassingen waarvan de huidige cultuur afwijkt van de standaardsysteemcultuur, is dit gedrag vaak ongewenst. In het .NET Framework 4.5 kan met de eigenschap DefaultThreadCurrentCulture een toepassing de standaardcultuur van alle threads in een toepassingsdomein definiëren.
Important
Als u de cultuur van bestaande threads die worden uitgevoerd in een toepassingsdomein niet expliciet hebt ingesteld, verandert het instellen van de DefaultThreadCurrentCulture eigenschap ook de cultuur van deze threads. Als deze threads echter worden uitgevoerd in een ander toepassingsdomein, wordt hun cultuur gedefinieerd door de DefaultThreadCurrentCulture eigenschap in dat toepassingsdomein of, als er geen standaardwaarde is gedefinieerd, door de standaardsysteemcultuur. Daarom raden we u aan altijd expliciet de cultuur van uw hoofdtoepassingsthread in te stellen en niet te vertrouwen op de DefaultThreadCurrentCulture eigenschap om de cultuur van de hoofdtoepassingsthread te definiëren.
Tenzij deze expliciet is ingesteld, wordt de waarde van de eigenschap DefaultThreadCurrentCulturenull en de cultuur van threads in een toepassingsdomein waaraan geen expliciete cultuur is toegewezen, gedefinieerd door de standaard-Windows systeemcultuur.
Zie de secties 'Cultuur en threads' en 'Cultuur- en toepassingsdomeinen' op de CultureInfo referentiepagina voor meer informatie over culturen, threads en toepassingsdomeinen.