CultureInfo.DefaultThreadCurrentCulture Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia kulturę domyślną dla wątków w bieżącej domenie aplikacji.
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
Wartość właściwości
Domyślna kultura wątków w bieżącej domenie aplikacji lub bieżąca kultura systemu jest domyślną kulturą wątków null
w domenie aplikacji.
Przykłady
Poniższy przykład ilustruje domyślne zachowanie .NET Framework definiowania bieżącej kultury nowego wątku. Podczas uruchamiania w przykładzie bieżąca kultura i bieżąca kultura interfejsu użytkownika są ustawiane na francuski (Francja) we wszystkich systemach z wyjątkiem tych, w których domyślna kultura systemowa to już Francuski (Francja). Jeśli domyślna kultura systemowa to już francuski (Francja), kod ustawia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na język angielski (Stany Zjednoczone). Następnie wywołuje procedurę DisplayRandomNumbers
, która generuje trzy liczby losowe i wyświetla je jako wartości walut. Następnie tworzy nowy wątek, który również wykonuje DisplayRandomNumbers
procedurę.
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 pokazują dane wyjściowe z przykładu, gdy przykład jest uruchamiany na komputerze, na którym kultura systemowa to angielski (Stany Zjednoczone), główny wątek wyświetla wartości walut przy użyciu konwencji formatowania kultury francuskiej (Francji). Jednak ponieważ kultura wątku roboczego jest pochodną bieżącej kultury systemu Windows, a nie bieżącej kultury aplikacji, wątek roboczy wyświetla wartości walut przy użyciu konwencji formatowania kultury angielskiej (Stany Zjednoczone).
W poniższym przykładzie użyto DefaultThreadCurrentCulture właściwości i do zdefiniowania bieżącej kultury i bieżącej kultury interfejsu DefaultThreadCurrentUICulture użytkownika nowego wątku aplikacji. Podczas uruchamiania w przykładzie bieżąca kultura i bieżąca kultura interfejsu użytkownika są ustawiane na francuski (Francja) we wszystkich systemach z wyjątkiem tych, w których domyślna kultura systemowa to już Francuski (Francja). Jeśli domyślna kultura systemowa to już francuski (Francja), bieżąca kultura i bieżąca kultura interfejsu użytkownika są ustawiane na język angielski (Stany Zjednoczone). Następnie wywołuje procedurę DisplayRandomNumbers
, która generuje trzy liczby losowe i wyświetla je jako wartości walut. Następnie tworzy nowy wątek, który również wykonuje DisplayRandomNumbers
procedurę.
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 pokazują dane wyjściowe z przykładu, gdy przykład jest uruchamiany na komputerze, na którym kultura systemowa to angielski (Stany Zjednoczone), zarówno główny wątek, jak i wątek roboczy wyświetlają wartości walut przy użyciu konwencji formatowania kultury francuskiej (Francja).
Uwagi
W .NET Framework 4 i poprzednich wersjach kultura wszystkich wątków jest domyślnie ustawiona na Windows systemu. W przypadku aplikacji, których bieżąca kultura różni się od domyślnej kultury systemowej, to zachowanie jest często niepożądane. W .NET Framework 4.5 właściwość umożliwia aplikacji definiowanie domyślnej kultury wszystkich wątków DefaultThreadCurrentCulture w domenie aplikacji.
Ważne
Jeśli nie ustawiono jawnie kultury istniejących wątków wykonywanych w domenie aplikacji, ustawienie właściwości również zmienia kulturę DefaultThreadCurrentCulture tych wątków. Jeśli jednak te wątki są wykonywane w innej domenie aplikacji, ich kultura jest definiowana przez właściwość w tej domenie aplikacji lub, jeśli nie zdefiniowano wartości domyślnej, przez domyślną DefaultThreadCurrentCulture kulturę systemową. W związku z tym zalecamy, aby zawsze jawnie ustawić kulturę głównego wątku aplikacji i nie polegać na właściwości w celu zdefiniowania kultury głównego DefaultThreadCurrentCulture wątku aplikacji.
Jeśli nie zostanie jawnie ustawiona, wartość właściwości to , a kultura wątków w domenie aplikacji, do których nie przypisano jawnej kultury, jest definiowana przez domyślną Windows DefaultThreadCurrentCulture null
systemową.
Aby uzyskać więcej informacji na temat kultur, wątków i domen aplikacji, zobacz sekcje "Kultura i wątki" i "Kultura i domeny aplikacji" na CultureInfo stronie referencyjnej.