CultureInfo.DefaultThreadCurrentCulture Egenskap

Definition

Hämtar eller anger standardkulturen för trådar i den aktuella programdomänen.

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

Egenskapsvärde

Standardkulturen för trådar i den aktuella programdomänen, eller null om den aktuella systemkulturen är standardtrådskulturen i programdomänen.

Exempel

I följande exempel visas standardbeteendet för .NET Framework när du definierar den aktuella kulturen i en ny tråd. Vid start anger exemplet den aktuella kulturen och den aktuella användargränssnittskulturen till franska (Frankrike) på alla system utom de där standardsystemkulturen redan är fransk (Frankrike). Om standardsystemkulturen redan är fransk (Frankrike) anger koden den aktuella kulturen och den aktuella UI-kulturen till engelska (United States). Den anropar sedan rutinen DisplayRandomNumbers , som genererar tre slumpmässiga tal och visar dem som valutavärden. Därefter skapas en ny tråd som även kör rutinen 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

Som utdata från exemplet visar, när exemplet körs på en dator vars systemkultur är engelska (United States), visar huvudtråden sina valutavärden med hjälp av formateringskonventionerna i den franska kulturen (Frankrike). Men eftersom arbetstrådens kultur härleds från den aktuella Windows systemkulturen i stället för programmets aktuella kultur, visar arbetstråden sina valutavärden med hjälp av formateringskonventionerna i den engelska (United States) kulturen.

I följande exempel används DefaultThreadCurrentCulture egenskaperna och DefaultThreadCurrentUICulture för att definiera den aktuella kulturen och den aktuella användargränssnittskulturen i en ny programtråd. Vid start anger exemplet den aktuella kulturen och den aktuella användargränssnittskulturen till franska (Frankrike) på alla system utom de där standardsystemkulturen redan är fransk (Frankrike). Om standardsystemkulturen redan är fransk (Frankrike), ställer den in den aktuella kulturen och den aktuella UI-kulturen till engelska (United States). Den anropar sedan rutinen DisplayRandomNumbers , som genererar tre slumpmässiga tal och visar dem som valutavärden. Därefter skapas en ny tråd som även kör rutinen 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 €

Som utdata från exemplet visar, när exemplet körs på en dator vars systemkultur är engelska (United States), visar både huvudtråden och arbetstråden sina valutavärden med hjälp av formateringskonventionerna i den franska kulturen (Frankrike).

Kommentarer

I .NET Framework 4 och tidigare versioner är kulturen för alla trådar som standard inställd på den Windows systemkulturen. För program vars nuvarande kultur skiljer sig från standardsystemkulturen är det här beteendet ofta oönskat. I .NET Framework 4.5 gör egenskapen DefaultThreadCurrentCulture att ett program kan definiera standardkulturen för alla trådar i en programdomän.

Important

Om du inte uttryckligen har angett kulturen för befintliga trådar som körs i en programdomän ändrar inställningen DefaultThreadCurrentCulture av egenskapen även kulturen i dessa trådar. Men om dessa trådar körs i en annan programdomän definieras deras kultur av DefaultThreadCurrentCulture egenskapen i den programdomänen eller, om inget standardvärde har definierats, av standardsystemkulturen. Därför rekommenderar vi att du alltid uttryckligen anger kulturen för huvudprogramtråden DefaultThreadCurrentCulture och inte förlitar dig på egenskapen för att definiera kulturen i huvudprogramtråden.

Om den inte anges explicit är värdet för egenskapen DefaultThreadCurrentCulturenull, och kulturen för trådar i en programdomän som inte har tilldelats en explicit kultur definieras som standard Windows systemkultur.

Mer information om kulturer, trådar och programdomäner finns i avsnitten "Kultur och trådar" och "Kultur- och programdomäner" på CultureInfo referenssidan.

Gäller för

Se även