CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture CultureInfo.DefaultThreadCurrentUICulture Property

정의

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

public:
 static property System::Globalization::CultureInfo ^ DefaultThreadCurrentUICulture { System::Globalization::CultureInfo ^ get(); void set(System::Globalization::CultureInfo ^ value); };
public static System.Globalization.CultureInfo DefaultThreadCurrentUICulture { get; set; }
member this.DefaultThreadCurrentUICulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentUICulture As CultureInfo

속성 값

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

예외

집합 작업에서 Name 속성 값이 올바르지 않습니다.In a set operation, the Name property value is invalid.

예제

다음 예제에서는 새 스레드의 현재 문화권을 정의에서.NET Framework의 기본 동작을 보여 줍니다.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. 영어 및 러시아어 언어 리소스가 사용합니다.It uses English and Russian language resources. GreetingStrings.txt 라는 텍스트 파일에는 영어 언어 리소스가 포함 됩니다.The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

사용 하 여 GreetingStrings.resources 라는 이진.resources 파일로 컴파일할 합니다 리소스 파일 생성기 다음 명령을 사용 하 여 합니다.It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

GreetingStrings.ru-RU.txt 라는 다음 텍스트 파일에는 러시아어 리소스가 포함 됩니다.The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

greeting=Еще раз привет!  
newGreeting=Привет!  

사용 하 여 GreetingStrings.ru RU.resources 라는 이진.resources 파일로 컴파일할 합니다 리소스 파일 생성기 다음 명령을 사용 하 여 합니다.It is compiled to a binary .resources file named GreetingStrings.ru-RU.resources by using the Resource File Generator with the following command.

resgen greetingstrings.ru-RU.txt  

아래 표시 되는 애플리케이션 코드는 Example1.cs 또는 Example1.vb 라는 파일에 상주 합니다.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Visual Basic 컴파일러에 대 한 다음 명령을 사용 하 여 실행 파일로 컴파일됩니다.It is compiled to an executable by using the following command for the Visual Basic compiler:

vbc Example1.vb /resource:GreetingStrings.resources  

C# 컴파일러의 경우이 명령은 비슷합니다.For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

이 예의 대체 문화권에 대 한 리소스와 함께 실행 코드를 포함 하는 어셈블리를 만듭니다.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. 사용할 수도 있습니다는 어셈블리 링커 다음 명령을 사용 하 여 러시아어 (러시아) 문화권에 대 한 리소스 파일을 만들려면:You can also use the Assembly Linker to create the resource file for the Russian (Russia) culture with the following command:

>al /embed:greetingstrings.ru-RU.resources /c:ru-RU /template:example1.exe /out:ru-RU\Example1.resources.dll  

시작 시는 예제에서는 현재 문화권 및 현재 UI 문화권 러시아어 (러시아)에서 설정 하는 기본 시스템 문화권에 이미 러시아어 항목을 제외한 모든 시스템 (러시아).At startup, the example sets the current culture and the current UI culture to Russian (Russia) on all systems except those on which the default system culture is already Russian (Russia). 기본 시스템 문화권 이미 있으면 러시아어 (러시아), 코드 집합 현재 문화권 및 현재 UI 문화권을 영어 (미국)입니다.If the default system culture is already Russian (Russia), the code sets the current culture and the current UI culture to English (United States). 그런 다음 호출 하는 ShowGreeting 후속 메서드 호출의 라고 처음으로 간단한 문자열과 약간 다른 문자열을 표시 하는 루틴입니다.It then calls the ShowGreeting routine, which displays a simple string the first time it is called and a slightly different string on subsequent method calls. 또한 실행 되는 새 스레드를 만들면 다음으로 ShowGreeting 루틴입니다.Next, it creates a new thread, which also executes the ShowGreeting routine.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   private static int nGreetings = 0;
   private static ResourceManager rm;

   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      rm = new ResourceManager("GreetingStrings", 
                               typeof(Example).Assembly);
                  
      CultureInfo culture = null;
      if (Thread.CurrentThread.CurrentUICulture.Name == "ru-RU")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("ru-RU");

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;

      ShowGreeting();
      Thread.Sleep(1000);

      Thread workerThread = new Thread(Example.ShowGreeting);
      workerThread.Start();
   }

   private static void ShowGreeting()
   {
      string greeting = nGreetings == 0 ? rm.GetString("newGreeting") :
                                          rm.GetString("greeting");
      nGreetings++;
      Console.WriteLine("{0}", greeting);   
   }
}
// The example displays the following output:
//       Привет!
//       Hello again!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguageAttribute("en-US")>

Public Class Example
   Private Shared nGreetings As Integer = 0
   Private Shared rm As ResourceManager

   Public Shared Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      rm = New ResourceManager("GreetingStrings", 
                               GetType(Example).Assembly)
                  
      Dim culture As CultureInfo = Nothing
      If Thread.CurrentThread.CurrentUICulture.Name = "ru-RU" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("ru-RU")
      End If   
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture

      ShowGreeting()
      Thread.Sleep(1000)

      Dim workerThread As New Thread(AddressOf Example.ShowGreeting)
      workerThread.Start()
   End Sub
   
   Private Shared Sub ShowGreeting()
      Dim greeting As String = CStr(IIf(nGreetings = 0, 
                                        rm.GetString("newGreeting"),
                                        rm.GetString("greeting")))
      nGreetings += 1
      Console.WriteLine("{0}", greeting)   
   End Sub
End Class
' The example displays the following output:
'       Привет!
'       Hello again!

시스템 문화권이 영어 (미국) 인 컴퓨터에서 예제가 실행 될 때, 예제의 출력에서 볼 수 있듯이 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 initial string in Russian. 그러나 작업자 스레드의 문화권은 애플리케이션의 현재 문화권 보다는 현재 Windows 시스템 문화권에서 파생 됩니다 때문에 작업자 스레드 영어에서 문자열을 표시 합니다.However, because the worker thread's culture is derived from the current Windows system culture rather than the application's current culture, the worker thread displays its string in English.

다음 예제에서는 합니다 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.

이 예제에서는 이전 예제와 동일한 리소스 파일을 사용 합니다.The example uses the same resources files as the previous example. 제외 하 고 실행 가능한 어셈블리의 이름을 변경에 컴파일할 러시아어 언어 리소스 위성 어셈블리로 포함 하는 명령을 동일 수 있습니다.The commands to compile and to embed the localized Russian language resources into a satellite assembly are also identical, except that the name of the executable assembly changes.

시작 시는 예제에서는 현재 문화권 및 현재 UI 문화권 러시아어 (러시아)에서 설정 하는 기본 시스템 문화권에 이미 러시아어 항목을 제외한 모든 시스템 (러시아).At startup, the example sets the current culture and the current UI culture to Russian (Russia) on all systems except those on which the default system culture is already Russian (Russia). 기본 시스템 문화권은 러시아어 이미 있는 경우 (러시아) 설정 현재 문화권 및 현재 UI 문화권을 영어 (미국)입니다.If the default system culture is already Russian (Russia), it sets the current culture and the current UI culture to English (United States). 그런 다음 호출 하는 ShowGreeting 후속 메서드 호출의 라고 처음으로 간단한 문자열과 약간 다른 문자열을 표시 하는 루틴입니다.It then calls the ShowGreeting routine, which displays a simple string the first time it is called and a slightly different string on subsequent method calls. 또한 실행 되는 새 스레드를 만들면 다음으로 ShowGreeting 루틴입니다.Next, it creates a new thread, which also executes the ShowGreeting routine.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en-US")]

public class Example
{
   private static int nGreetings = 0;
   private static ResourceManager rm;

   public static void Main()
   {
      AppDomain domain = AppDomain.CurrentDomain;
      rm = new ResourceManager("GreetingStrings", 
                               typeof(Example).Assembly);
                  
      CultureInfo culture = null;
      if (Thread.CurrentThread.CurrentUICulture.Name == "ru-RU")
         culture = CultureInfo.CreateSpecificCulture("en-US");
      else
         culture = CultureInfo.CreateSpecificCulture("ru-RU");

      CultureInfo.DefaultThreadCurrentCulture = culture;
      CultureInfo.DefaultThreadCurrentUICulture = culture;

      Thread.CurrentThread.CurrentCulture = culture;
      Thread.CurrentThread.CurrentUICulture = culture;

      ShowGreeting();
      Thread.Sleep(1000);

      Thread workerThread = new Thread(Example.ShowGreeting);
      workerThread.Start();
   }

   private static void ShowGreeting()
   {
      string greeting = nGreetings == 0 ? rm.GetString("newGreeting") :
                                          rm.GetString("greeting");
      nGreetings++;
      Console.WriteLine("{0}", greeting);   
   }
}
// The example displays the following output:
//       Привет!
//       Еще раз привет!
Imports System.Globalization
Imports System.Reflection
Imports System.Resources
Imports System.Threading

<Assembly:NeutralResourcesLanguageAttribute("en-US")>

Public Class Example
   Private Shared nGreetings As Integer = 0
   Private Shared rm As ResourceManager

   Public Shared Sub Main()
      Dim domain As AppDomain = AppDomain.CurrentDomain
      rm = New ResourceManager("GreetingStrings", 
                               GetType(Example).Assembly)
                  
      Dim culture As CultureInfo = Nothing
      If Thread.CurrentThread.CurrentUICulture.Name = "ru-RU" Then
         culture = CultureInfo.CreateSpecificCulture("en-US")
      Else
         culture = CultureInfo.CreateSpecificCulture("ru-RU")
      End If   
      CultureInfo.DefaultThreadCurrentCulture = culture
      CultureInfo.DefaultThreadCurrentUICulture = culture
       
      Thread.CurrentThread.CurrentCulture = culture
      Thread.CurrentThread.CurrentUICulture = culture

      ShowGreeting()
      Thread.Sleep(1000)

      Dim workerThread As New Thread(AddressOf Example.ShowGreeting)
      workerThread.Start()
   End Sub
   
   Private Shared Sub ShowGreeting()
      Dim greeting As String = CStr(IIf(nGreetings = 0, 
                                        rm.GetString("newGreeting"),
                                        rm.GetString("greeting")))
      nGreetings += 1
      Console.WriteLine("{0}", greeting)   
   End Sub
End Class
' The example displays the following output:
'       Привет!
'       Еще раз привет!

시스템 문화권이 영어 (미국) 인 컴퓨터에서 예제가 실행 될 때, 예제의 출력에서 볼 수 있듯이 주 스레드와 작업자 스레드 모두 러시아어 언어에서 해당 문자열 표시 합니다.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 strings in the Russian language.

설명

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

중요

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

값을 명시적으로 설정 되어 있지 않으면 합니다 DefaultThreadCurrentUICulture 속성은 null, 명시적 culture 할당 되지 않은 애플리케이션 도메인의 모든 스레드는 현재 문화권 기본 Windows 시스템 문화권에 의해 정의 됩니다.Unless it is set explicitly, the value of the DefaultThreadCurrentUICulture property is null, and the current culture of all 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.

적용 대상

추가 정보