CultureInfo.DefaultThreadCurrentCulture Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví výchozí jazykovou verzi pro vlákna v aktuální doméně aplikace.
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
Hodnota vlastnosti
Výchozí jazyková verze pro vlákna v aktuální doméně aplikace nebo null
pokud je aktuální jazyková verze systému výchozí jazykovou verzí vlákna v doméně aplikace.
Příklady
Následující příklad ukazuje výchozí chování rozhraní .NET Framework při definování aktuální jazykové verze nového vlákna. Při spuštění příklad nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na francouzštinu (Francie) ve všech systémech s výjimkou těch, u kterých je výchozí jazyková verze systému již francouzština (Francie). Pokud je výchozí jazyková verze systému již francouzština (Francie), kód nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na angličtinu (USA). Potom zavolá rutinu DisplayRandomNumbers
, která vygeneruje tři náhodná čísla a zobrazí je jako hodnoty měny. Dále vytvoří nové vlákno, které také spustí rutinu DisplayRandomNumbers
.
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
Jak ukazuje výstup z příkladu, při spuštění příkladu na počítači, jehož systémová jazyková verze je Angličtina (USA), hlavní vlákno zobrazí své hodnoty měny pomocí konvencí formátování francouzské (Francie) jazykové verze. Vzhledem k tomu, že jazyková verze pracovního vlákna je odvozena z aktuální jazykové verze Systému Windows, nikoli z aktuální jazykové verze aplikace, pracovní vlákno zobrazí své hodnoty měny pomocí konvencí formátování anglické (USA) jazykové verze.
Následující příklad používá DefaultThreadCurrentCulture vlastnosti a DefaultThreadCurrentUICulture k definování aktuální jazykové verze a aktuální jazykové verze uživatelského rozhraní nového vlákna aplikace. Při spuštění příklad nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na francouzštinu (Francie) ve všech systémech s výjimkou těch, u kterých je výchozí jazyková verze systému již francouzština (Francie). Pokud je výchozí jazyková verze systému již francouzština (Francie), nastaví aktuální jazykovou verzi a aktuální jazykovou verzi uživatelského rozhraní na angličtinu (USA). Potom zavolá rutinu DisplayRandomNumbers
, která vygeneruje tři náhodná čísla a zobrazí je jako hodnoty měny. Dále vytvoří nové vlákno, které také spustí rutinu DisplayRandomNumbers
.
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 €
Jak ukazuje výstup z příkladu, při spuštění příkladu na počítači, jehož systémová jazyková verze je Angličtina (USA), hlavní vlákno i pracovní vlákno zobrazí své hodnoty měny pomocí konvencí formátování francouzské (Francie) jazykové verze.
Poznámky
V rozhraní .NET Framework 4 a předchozích verzích je ve výchozím nastavení jazyková verze všech vláken nastavena na jazykovou verzi systému Windows. U aplikací, jejichž aktuální jazyková verze se liší od výchozí systémové jazykové verze, je toto chování často nežádoucí. V rozhraní .NET Framework 4.5 DefaultThreadCurrentCulture umožňuje vlastnost aplikaci definovat výchozí jazykovou verzi všech vláken v doméně aplikace.
Důležité
Pokud jste explicitně nenastavili jazykovou verzi žádných existujících vláken spouštěných v doméně aplikace, nastavení DefaultThreadCurrentCulture vlastnosti také změní jazykovou verzi těchto vláken. Pokud se však tato vlákna spouští v jiné doméně aplikace, jejich jazyková verze je definována DefaultThreadCurrentCulture vlastností v této doméně aplikace nebo, pokud není definována žádná výchozí hodnota, výchozí jazykovou verzí systému. Z tohoto důvodu doporučujeme vždy explicitně nastavit jazykovou verzi hlavního vlákna aplikace a nespoléhat na DefaultThreadCurrentCulture vlastnost definovat jazykovou verzi hlavního vlákna aplikace.
Pokud není nastaven explicitně, hodnota DefaultThreadCurrentCulture vlastnosti je null
a jazyková verze vláken v doméně aplikace, kterým nebyla přiřazena explicitní jazyková verze, je definována výchozí jazykovou verzí systému Windows.
Další informace o jazykových verzích, vláknech a doménách aplikací najdete v částech "Jazyková verze a vlákna" a "Jazykové verze a domény aplikací" na CultureInfo referenční stránce.