CultureInfo.DefaultThreadCurrentUICulture Özellik

Tanım

Geçerli uygulama etki alanındaki iş parçacıkları için varsayılan UI kültürünü alır veya ayarlar.

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; }
public static System.Globalization.CultureInfo? DefaultThreadCurrentUICulture { get; set; }
static member DefaultThreadCurrentUICulture : System.Globalization.CultureInfo with get, set
Public Shared Property DefaultThreadCurrentUICulture As CultureInfo

Özellik Değeri

Geçerli uygulama etki alanındaki iş parçacıkları için varsayılan UI kültürü veya null geçerli sistem UI kültürü uygulama etki alanındaki varsayılan iş parçacığı UI kültürüyse.

Özel durumlar

Ayarlanmış bir işlemde Name özellik değeri geçersizdir.

Örnekler

Aşağıdaki örnekte, yeni iş parçacığının geçerli kültürünü tanımlamada .NET Framework varsayılan davranışı gösterilmektedir. İngilizce ve Rusça dil kaynaklarını kullanır. GreetingStrings.txt adlı aşağıdaki metin dosyası İngilizce dil kaynaklarını içerir:

greeting =Hello again!
newGreeting=Hello!

Aşağıdaki komutla Kaynak Dosya Oluşturucu kullanılarak GreetingStrings.resources adlı bir ikili .resources dosyasına derlenmiş.

resgen greetingstrings.txt

GreetingStrings.ru-RU.txt adlı aşağıdaki metin dosyası Rusça dil kaynaklarını içerir:

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

Aşağıdaki komutla Kaynak Dosya Oluşturucu kullanılarak GreetingStrings.ru-RU.resources adlı ikili bir .resources dosyasına derlenmiş.

resgen greetingstrings.ru-RU.txt

Aşağıda gösterilen uygulama kodu, Example1.vb veya Example1.cs adlı bir dosyada bulunur. Visual Basic derleyicisi için aşağıdaki komut kullanılarak yürütülebilir bir dosyaya derlenmiş:

vbc Example1.vb /resource:GreetingStrings.resources

C# derleyicisi için komutu benzerdir:

csc /resource:GreetingStrings.resources Example1.cs

Bu, örneğin yürütülebilir kodunu ve geri dönüş kültürünün kaynaklarını içeren bir derleme oluşturur. Aşağıdaki komutla Rus (Rusya) kültürü için kaynak dosyasını oluşturmak için Assembly Linker'ı da kullanabilirsiniz:

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

Başlangıçta örnek, varsayılan sistem kültürünün zaten Rusça (Rusya) olduğu sistemler dışında tüm sistemlerde geçerli kültürü ve geçerli kullanıcı arabirimi kültürünü Rusça (Rusya) olarak ayarlar. Varsayılan sistem kültürü zaten Rusça (Rusya) ise, kod geçerli kültürü ve geçerli kullanıcı arabirimi kültürünü İngilizce (Birleşik Devletler) olarak ayarlar. Daha sonra ShowGreeting , ilk kez çağrıldığında basit bir dize ve sonraki yöntem çağrılarında biraz farklı bir dize görüntüleyen yordamını çağırır. Ardından, yordamı da yürüten ShowGreeting yeni bir iş parçacığı oluşturur.

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!

Örneğin çıktısında gösterildiği gibi, örnek sistem kültürü İngilizce (Birleşik Devletler) olan bir bilgisayarda çalıştırıldığında, ana iş parçacığı ilk dizesini Rusça olarak görüntüler. Ancak, çalışan iş parçacığının kültürü uygulamanın geçerli kültürü yerine geçerli Windows sistem kültüründen türetildiğinden, çalışan iş parçacığı dizesini İngilizce görüntüler.

Aşağıdaki örnek, yeni bir uygulama iş parçacığının DefaultThreadCurrentCulture geçerli kültürünü ve geçerli kullanıcı arabirimi kültürünü tanımlamak için ve DefaultThreadCurrentUICulture özelliklerini kullanır.

Örnekte, önceki örnekle aynı kaynak dosyaları kullanılır. Yerelleştirilmiş Rusça dil kaynaklarını bir uydu derlemesine derleme ve ekleme komutları da aynıdır, ancak yürütülebilir derlemenin adı değişir.

Başlangıçta örnek, varsayılan sistem kültürünün zaten Rusça (Rusya) olduğu sistemler dışında tüm sistemlerde geçerli kültürü ve geçerli kullanıcı arabirimi kültürünü Rusça (Rusya) olarak ayarlar. Varsayılan sistem kültürü zaten Rusça (Rusya) ise, geçerli kültürü ve geçerli kullanıcı arabirimi kültürünü İngilizce (Birleşik Devletler) olarak ayarlar. Daha sonra ShowGreeting , ilk kez çağrıldığında basit bir dize ve sonraki yöntem çağrılarında biraz farklı bir dize görüntüleyen yordamını çağırır. Ardından, yordamı da yürüten ShowGreeting yeni bir iş parçacığı oluşturur.

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:
'       Привет!
'       Еще раз привет!

Örneğin çıktısında gösterildiği gibi, örnek sistem kültürü İngilizce (Birleşik Devletler) olan bir bilgisayarda çalıştırıldığında, hem ana iş parçacığı hem de çalışan iş parçacığı dizelerini Rusça dilinde görüntüler.

Açıklamalar

.NET Framework 4 ve önceki sürümlerde, varsayılan olarak tüm iş parçacıklarının UI kültürü Windows sistem kültürüne ayarlanır. Geçerli kullanıcı arabirimi kültürü varsayılan sistem kültüründen farklı olan uygulamalar için bu davranış genellikle istenmeyen bir davranıştır. .NET Framework 4.5'te DefaultThreadCurrentUICulture özelliği, bir uygulama etki alanındaki tüm iş parçacıklarının varsayılan ui kültürünü tanımlamanızı sağlar.

Önemli

Bir uygulama etki alanında yürütülen mevcut iş parçacıklarının ui kültürünü açıkça ayarlamadıysanız, özelliğini ayarlamak DefaultThreadCurrentUICulture bu iş parçacıklarının kültürünü de değiştirir. Ancak, bu iş parçacıkları başka bir uygulama etki alanında yürütülürse, bu iş parçacıklarının DefaultThreadCurrentUICulture kültürü söz konusu uygulama etki alanındaki özelliği veya varsayılan değer tanımlanmadıysa, varsayılan sistem kültürü tarafından tanımlanır. Bu nedenle, ana uygulama iş parçacığınızın kültürünü her zaman açıkça ayarlamanızı ve ana uygulama iş parçacığının DefaultThreadCurrentUICulture kültürünü tanımlamak için özelliğine güvenmemenizi öneririz.

Açıkça ayarlanmadığı sürece, özelliğinin DefaultThreadCurrentUICulture değeri olur nullve açık bir kültür atanmamış bir uygulama etki alanındaki tüm iş parçacıklarının geçerli kültürü varsayılan Windows sistem kültürü tarafından tanımlanır.

Kültürler, iş parçacıkları ve uygulama etki alanları hakkında daha fazla bilgi için başvuru sayfasındaki "Kültür ve iş parçacıkları" ve "Kültür ve uygulama etki alanları" bölümlerine CultureInfo bakın.

Şunlara uygulanır

Ayrıca bkz.