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; }
member this.DefaultThreadCurrentCulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentCulture As CultureInfo

속성 값

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 시스템 문화권에서 파생 됩니다 때문에 작업 스레드는 영어 (미국) 문화권의 서식 규칙을 사용 하 여 해당 통화 값을 표시 합니다.

다음 예제에서는 합니다 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 현재 문화권 및 새 애플리케이션 스레드의 현재 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 참조 페이지입니다.

적용 대상

추가 정보