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 domyślną kulturę 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; }
static member 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 null
jeśli bieżąca kultura systemowa jest domyślną kulturą wątku w domenie aplikacji.
Przykłady
Poniższy przykład ilustruje domyślne zachowanie .NET Framework podczas definiowania bieżącej kultury nowego wątku. Podczas uruchamiania przykład ustawia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na francuski (Francja) we wszystkich systemach, z wyjątkiem tych, w których domyślna kultura systemowa jest już francuska (Francja). Jeśli domyślna kultura systemowa jest już francuska (Francja), kod ustawia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na angielski (Stany Zjednoczone). Następnie wywołuje procedurę DisplayRandomNumbers
, która generuje trzy losowe liczby i wyświetla je jako wartości waluty. Następnie tworzy nowy wątek, który również wykonuje procedurę 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 pokazuje dane wyjściowe z przykładu, gdy przykład jest uruchamiany na komputerze, którego kultura systemowa jest angielska (Stany Zjednoczone), główny wątek wyświetla wartości waluty przy użyciu konwencji formatowania kultury francuskiej (Francja). Jednak ponieważ kultura wątku roboczego pochodzi z bieżącej kultury systemu Windows, a nie bieżącej kultury aplikacji, wątek roboczy wyświetla wartości waluty przy użyciu konwencji formatowania kultury angielskiej (Stany Zjednoczone).
W poniższym przykładzie użyto DefaultThreadCurrentCulture właściwości i DefaultThreadCurrentUICulture do zdefiniowania bieżącej kultury i bieżącej kultury interfejsu użytkownika nowego wątku aplikacji. Podczas uruchamiania przykład ustawia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na francuski (Francja) we wszystkich systemach, z wyjątkiem tych, w których domyślna kultura systemowa jest już francuska (Francja). Jeśli domyślna kultura systemowa jest już francuska (Francja), ustawia bieżącą kulturę i bieżącą kulturę interfejsu użytkownika na angielski (Stany Zjednoczone). Następnie wywołuje procedurę DisplayRandomNumbers
, która generuje trzy losowe liczby i wyświetla je jako wartości waluty. Następnie tworzy nowy wątek, który również wykonuje procedurę 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 pokazuje dane wyjściowe z przykładu, gdy przykład jest uruchamiany na komputerze, którego kultura systemowa jest angielska (Stany Zjednoczone), zarówno główny wątek, jak i wątek roboczy wyświetlają swoje wartości waluty przy użyciu konwencji formatowania kultury francuskiej (Francja).
Uwagi
W .NET Framework 4 i poprzednich wersjach domyślnie kultura wszystkich wątków jest ustawiona na kulturę systemu Windows. W przypadku aplikacji, których bieżąca kultura różni się od domyślnej kultury systemu, to zachowanie jest często niepożądane. W .NET Framework 4.5 DefaultThreadCurrentCulture właściwość umożliwia aplikacji zdefiniowanie domyślnej kultury wszystkich wątków w domenie aplikacji.
Ważne
Jeśli nie ustawiono jawnie kultury istniejących wątków wykonywanych w domenie aplikacji, ustawienie DefaultThreadCurrentCulture właściwości zmienia również kulturę tych wątków. Jeśli jednak te wątki są wykonywane w innej domenie aplikacji, ich kultura jest definiowana przez DefaultThreadCurrentCulture właściwość w tej domenie aplikacji lub, jeśli nie zdefiniowano wartości domyślnej, domyślnie jest to kultura systemowa. W związku z tym zalecamy, aby zawsze jawnie ustawić kulturę głównego wątku aplikacji, a nie polegać na DefaultThreadCurrentCulture właściwości w celu zdefiniowania kultury głównego wątku aplikacji.
Jeśli nie zostanie jawnie ustawiona, wartość DefaultThreadCurrentCulture właściwości to null
, a kultura wątków w domenie aplikacji, która nie została przypisana, jest definiowana przez domyślną kulturę systemu Windows.
Aby uzyskać więcej informacji na temat kultur, wątków i domen aplikacji, zobacz sekcje "Kultura i wątki" i "Domeny kultury i aplikacji" na stronie referencyjnej CultureInfo .