CultureInfo.DefaultThreadCurrentCulture 속성

정의

현재 애플리케이션 도메인의 스레드에 대한 기본 문화권을 가져오거나 설정합니다.Gets or sets the default culture for threads in the current application domain.

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

속성 값

기본 문화권은 현재 어플리케이션 도메인에 있는 스레드에 해당하며 현재 시스템 문화권이 애플리케이션 도메인에 있는 기본 스레드 문화권인 경우 null입니다.The default culture for threads in the current application domain, or null if the current system culture is the default thread culture in the application domain.

예제

다음 예제에서는 새 스레드의 현재 문화권을 정의에서.NET Framework의 기본 동작을 보여 줍니다.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. 시작 시의 예제에서는 현재 문화권 및 현재 UI 문화권을 프랑스어 (프랑스)로 기본 시스템 문화권은 이미 프랑스어 (프랑스) 항목을 제외한 모든 시스템에서At startup, the example sets the current culture and the current UI culture to French (France) on all systems except those on which the default system culture is already French (France). 코드 기본 시스템 문화권 프랑스어 (프랑스)를 이미 현재 문화권 및 현재 UI 문화권을 영어 (미국) 설정 합니다.If the default system culture is already French (France), the code sets the current culture and the current UI culture to English (United States). 그런 다음 세 개의 난수를 생성 하 고 통화 값으로 표시 하는 DisplayRandomNumbers 루틴을 호출 합니다.It then calls the DisplayRandomNumbers routine, which generates three random numbers and displays them as currency values. 다음으로 DisplayRandomNumbers 루틴을 실행 하는 새 스레드를 만듭니다.Next, it creates a new thread, which also executes the DisplayRandomNumbers routine.

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     

시스템 문화권이 영어 (미국) 인 컴퓨터에서 예제가 실행 될 때, 예제의 출력에서 볼 수 있듯이 main 프랑스어 (프랑스) 문화권의 서식 규칙을 사용 하 여 해당 통화 값을 표시 합니다.As the output from the example shows, when the example is run on a computer whose system culture is English (United States), the main thread displays its currency values using the formatting conventions of the French (France) culture. 그러나 작업자 스레드의 문화권은 애플리케이션의 현재 문화권 보다는 현재 Windows 시스템 문화권에서 파생 됩니다 때문에 작업 스레드는 영어 (미국) 문화권의 서식 규칙을 사용 하 여 해당 통화 값을 표시 합니다.However, because the worker thread's culture is derived from the current Windows system culture rather than the application's current culture, the work thread displays its currency values using the formatting conventions of the English (United States) culture.

다음 예제에서는 합니다 DefaultThreadCurrentCultureDefaultThreadCurrentUICulture 현재 문화권 및 새 애플리케이션 스레드의 현재 UI 문화권을 정의 하는 속성입니다.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread. 시작 시의 예제에서는 현재 문화권 및 현재 UI 문화권을 프랑스어 (프랑스)로 기본 시스템 문화권은 이미 프랑스어 (프랑스) 항목을 제외한 모든 시스템에서At startup, the example sets the current culture and the current UI culture to French (France) on all systems except those on which the default system culture is already French (France). 해당 대화 상자가 프랑스어 (프랑스) 이미 경우에 기본 시스템 문화권을 영어 (미국) 현재 문화권 및 현재 UI 문화권 설정 합니다.If the default system culture is already French (France), it sets the current culture and the current UI culture to English (United States). 그런 다음 세 개의 난수를 생성 하 고 통화 값으로 표시 하는 DisplayRandomNumbers 루틴을 호출 합니다.It then calls the DisplayRandomNumbers routine, which generates three random numbers and displays them as currency values. 다음으로 DisplayRandomNumbers 루틴을 실행 하는 새 스레드를 만듭니다.Next, it creates a new thread, which also executes the DisplayRandomNumbers routine.

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 €

시스템 문화권이 영어 (미국) 인 컴퓨터에서 예제가 실행 될 때, 예제의 출력에서 볼 수 있듯이 주 스레드와 작업자 스레드는 프랑스어 (프랑스) 문화권의 서식 규칙을 사용 하 여 통화 값을 표시 합니다.As the output from the example shows, when the example is run on a computer whose system culture is English (United States), both the main thread and the worker thread display their currency values using the formatting conventions of the French (France) culture.

설명

.NET Framework 4.NET Framework 4 및 이전 버전에서는 기본적으로 모든 스레드의 문화권이 Windows 시스템 문화권으로 설정 됩니다.In the .NET Framework 4.NET Framework 4 and previous versions, by default, the culture of all threads is set to the Windows system culture. 애플리케이션의 기본 시스템 문화권에서 다른 현재 문화권 인 경우이 동작이 종종 필요 없는 합니다.For applications whose current culture differs from the default system culture, this behavior is often undesirable. .NET Framework 4.5.NET Framework 4.5, DefaultThreadCurrentCulture 속성을 사용 하면 애플리케이션을 애플리케이션 도메인에서 모든 스레드의 기본 문화권을 정의 합니다.In the .NET Framework 4.5.NET Framework 4.5, the DefaultThreadCurrentCulture property enables an application to define the default culture of all threads in an application domain.

중요

설정 하는 애플리케이션 도메인에서 실행의 문화권을 명시적으로 설정 하지 않은 경우 모든 기존 스레드를 DefaultThreadCurrentCulture 속성에 이러한 스레드 문화권도 변경 합니다.If you have not explicitly set the culture of any existing threads executing in an application domain, setting the DefaultThreadCurrentCulture property also changes the culture of these threads. 그러나 이러한 스레드를 다른 애플리케이션 도메인에서 실행 하는 경우 해당 문화권 정의한는 DefaultThreadCurrentCulture 해당 애플리케이션 도메인의 속성 또는 기본값이 기본 시스템 문화권에 의해 정의 된 경우.However, if these threads execute in another application domain, their culture is defined by the DefaultThreadCurrentCulture property in that application domain or, if no default value is defined, by the default system culture. 이 인해 것이 좋습니다에 의존 하지 않고 항상 명시적으로 기본 애플리케이션 스레드의 문화권을 설정 하는 DefaultThreadCurrentCulture 주 애플리케이션 스레드의 문화권을 정의 하는 속성입니다.Because of this, we recommend that you always explicitly set the culture of your main application thread, and not rely on the DefaultThreadCurrentCulture property to define the culture of the main application thread.

값을 명시적으로 설정 되어 있지 않으면 합니다 DefaultThreadCurrentCulture 속성은 null, 명시적 culture 할당 되지 않은 애플리케이션 도메인에서 스레드의 문화권은 기본 Windows 시스템 문화권에 의해 정의 됩니다.Unless it is set explicitly, the value of the DefaultThreadCurrentCulture property is null, and the culture of threads in an application domain that have not been assigned an explicit culture is defined by the default Windows system culture.

문화권, 스레드 및 애플리케이션 도메인에 대 한 자세한 내용은 "문화권 및 스레드"를 참조 하세요. 및 "문화권 및 애플리케이션 도메인" 섹션을 CultureInfo 참조 페이지입니다.For more information about cultures, threads, and application domains, see the "Culture and threads" and "Culture and application domains" sections in the CultureInfo reference page.

적용 대상

추가 정보