Bagikan melalui


CultureInfo.DefaultThreadCurrentCulture Properti

Definisi

Mendapatkan atau mengatur budaya default untuk utas di domain aplikasi saat ini.

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

Nilai Properti

Budaya default untuk utas di domain aplikasi saat ini, atau null jika budaya sistem saat ini adalah budaya utas default di domain aplikasi.

Contoh

Contoh berikut menggambarkan perilaku default .NET Framework dalam menentukan budaya utas baru saat ini. Saat startup, contoh menetapkan budaya saat ini dan budaya UI saat ini ke Bahasa Prancis (Prancis) pada semua sistem kecuali yang budaya sistem defaultnya sudah prancis (Prancis). Jika budaya sistem default sudah bahasa Prancis (Prancis), kode menetapkan budaya saat ini dan budaya UI saat ini ke bahasa Inggris (Amerika Serikat). Kemudian memanggil DisplayRandomNumbers rutinitas, yang menghasilkan tiga angka acak dan menampilkannya sebagai nilai mata uang. Selanjutnya, ia membuat utas baru, yang juga menjalankan DisplayRandomNumbers rutinitas.

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

Seperti yang ditunjukkan oleh output dari contoh, ketika contoh dijalankan pada komputer yang budaya sistemnya adalah bahasa Inggris (Amerika Serikat), utas utama menampilkan nilai mata uangnya menggunakan konvensi pemformatan budaya Prancis (Prancis). Namun, karena budaya utas pekerja berasal dari budaya sistem Windows saat ini daripada budaya aplikasi saat ini, utas kerja menampilkan nilai mata uangnya menggunakan konvensi pemformatan budaya Inggris (Amerika Serikat).

Contoh berikut menggunakan DefaultThreadCurrentCulture properti dan DefaultThreadCurrentUICulture untuk menentukan budaya saat ini dan budaya UI saat ini dari utas aplikasi baru. Saat startup, contoh menetapkan budaya saat ini dan budaya UI saat ini ke Bahasa Prancis (Prancis) pada semua sistem kecuali yang budaya sistem defaultnya sudah prancis (Prancis). Jika budaya sistem default sudah prancis (Prancis), itu menetapkan budaya saat ini dan budaya UI saat ini ke Bahasa Inggris (Amerika Serikat). Kemudian memanggil DisplayRandomNumbers rutinitas, yang menghasilkan tiga angka acak dan menampilkannya sebagai nilai mata uang. Selanjutnya, ia membuat utas baru, yang juga menjalankan DisplayRandomNumbers rutinitas.

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 €

Seperti yang ditunjukkan oleh output dari contoh, ketika contoh dijalankan pada komputer yang budaya sistemnya adalah bahasa Inggris (Amerika Serikat), utas utama dan utas pekerja menampilkan nilai mata uang mereka menggunakan konvensi pemformatan budaya Prancis (Prancis).

Keterangan

Dalam .NET Framework 4 dan versi sebelumnya, secara default, budaya semua utas diatur ke budaya sistem Windows. Untuk aplikasi yang budayanya saat ini berbeda dari budaya sistem default, perilaku ini sering kali tidak diinginkan. Dalam .NET Framework 4.5, DefaultThreadCurrentCulture properti memungkinkan aplikasi untuk menentukan budaya default semua utas dalam domain aplikasi.

Penting

Jika Anda belum secara eksplisit mengatur budaya utas yang ada yang dijalankan di domain aplikasi, mengatur DefaultThreadCurrentCulture properti juga mengubah budaya utas ini. Namun, jika utas ini dijalankan di domain aplikasi lain, budayanya ditentukan oleh properti di domain aplikasi tersebut DefaultThreadCurrentCulture atau, jika tidak ada nilai default yang ditentukan, oleh budaya sistem default. Karena itu, kami sarankan Anda selalu secara eksplisit mengatur budaya utas aplikasi utama Anda, dan tidak mengandalkan DefaultThreadCurrentCulture properti untuk menentukan budaya utas aplikasi utama.

Kecuali diatur secara eksplisit, nilai DefaultThreadCurrentCulture properti adalah null, dan budaya utas dalam domain aplikasi yang belum diberi budaya eksplisit didefinisikan oleh budaya sistem Windows default.

Untuk informasi selengkapnya tentang budaya, utas, dan domain aplikasi, lihat bagian "Budaya dan utas" dan "Budaya dan domain aplikasi" di CultureInfo halaman referensi.

Berlaku untuk

Lihat juga