다음을 통해 공유


CultureInfo.DefaultThreadCurrentCulture 속성

정의

현재 애플리케이션 도메인의 스레드에 대한 기본 문화권을 가져오거나 설정합니다.

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

속성 값

기본 문화권은 현재 어플리케이션 도메인에 있는 스레드에 해당하며 현재 시스템 문화권이 애플리케이션 도메인에 있는 기본 스레드 문화권인 경우 null입니다.

예제

다음 예제에서는 새 스레드의 현재 문화권을 정의하는 .NET Framework 기본 동작을 보여 줍니다. 시작 시 기본 시스템 문화권이 이미 프랑스어(프랑스)인 시스템을 제외한 모든 시스템에서 현재 문화권 및 현재 UI 문화권을 프랑스어(프랑스)로 설정하는 예제입니다. 기본 시스템 문화권이 이미 프랑스어(프랑스)인 경우 코드는 현재 문화권과 현재 UI 문화권을 영어(미국)로 설정합니다. 그런 다음 세 개의 난수를 생성하고 통화 값으로 표시하는 루틴을 호출 DisplayRandomNumbers 합니다. 다음으로, 루틴을 실행하는 새 스레드를 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

예제의 출력에서 알 수 있듯이 시스템 문화권이 영어(미국)인 컴퓨터에서 예제를 실행할 때 기본 스레드는 프랑스어(프랑스) 문화권의 서식 규칙을 사용하여 통화 값을 표시합니다. 그러나 작업자 스레드의 문화권은 애플리케이션의 현재 문화권 보다는 현재 Windows 시스템 문화권에서 파생 됩니다 때문에 작업 스레드는 영어 (미국) 문화권의 서식 규칙을 사용 하 여 해당 통화 값을 표시 합니다.

다음 예제에서는 및 DefaultThreadCurrentUICulture 속성을 사용하여 DefaultThreadCurrentCulture 새 애플리케이션 스레드의 현재 문화권 및 현재 UI 문화권을 정의합니다. 시작 시 기본 시스템 문화권이 이미 프랑스어(프랑스)인 시스템을 제외한 모든 시스템에서 현재 문화권 및 현재 UI 문화권을 프랑스어(프랑스)로 설정하는 예제입니다. 기본 시스템 문화권이 이미 프랑스어(프랑스)인 경우 현재 문화권과 현재 UI 문화권을 영어(미국)로 설정합니다. 그런 다음 세 개의 난수를 생성하고 통화 값으로 표시하는 루틴을 호출 DisplayRandomNumbers 합니다. 다음으로, 루틴을 실행하는 새 스레드를 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 €

예제의 출력에서 알 수 있듯이 시스템 문화권이 영어(미국)인 컴퓨터에서 예제를 실행할 때 기본 스레드와 작업자 스레드는 모두 프랑스어(프랑스) 문화권의 서식 규칙을 사용하여 통화 값을 표시합니다.

설명

.NET Framework 4 및 이전 버전에서는 기본적으로 모든 스레드의 문화권이 Windows 시스템 문화권으로 설정됩니다. 애플리케이션의 기본 시스템 문화권에서 다른 현재 문화권 인 경우이 동작이 종종 필요 없는 합니다. .NET Framework 4.5 DefaultThreadCurrentCulture 에서 속성을 사용하면 애플리케이션이 애플리케이션 도메인에 있는 모든 스레드의 기본 문화권을 정의할 수 있습니다.

중요

설정 하는 애플리케이션 도메인에서 실행의 문화권을 명시적으로 설정 하지 않은 경우 모든 기존 스레드를 DefaultThreadCurrentCulture 속성에 이러한 스레드 문화권도 변경 합니다. 그러나 이러한 스레드를 다른 애플리케이션 도메인에서 실행 하는 경우 해당 문화권 정의한는 DefaultThreadCurrentCulture 해당 애플리케이션 도메인의 속성 또는 기본값이 기본 시스템 문화권에 의해 정의 된 경우. 이 인해 것이 좋습니다에 의존 하지 않고 항상 명시적으로 기본 애플리케이션 스레드의 문화권을 설정 하는 DefaultThreadCurrentCulture 주 애플리케이션 스레드의 문화권을 정의 하는 속성입니다.

값을 명시적으로 설정 되어 있지 않으면 합니다 DefaultThreadCurrentCulture 속성은 null, 명시적 culture 할당 되지 않은 애플리케이션 도메인에서 스레드의 문화권은 기본 Windows 시스템 문화권에 의해 정의 됩니다.

문화권, 스레드 및 애플리케이션 도메인에 대 한 자세한 내용은 "문화권 및 스레드"를 참조 하세요. 및 "문화권 및 애플리케이션 도메인" 섹션을 CultureInfo 참조 페이지입니다.

적용 대상

추가 정보