CultureInfo.DefaultThreadCurrentUICulture Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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, ilk çağrıldığında basit bir dizeyi ve sonraki yöntem çağrılarında biraz farklı bir dizeyi görüntüleyen yordamını çağırır ShowGreeting
. 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, ilk çağrıldığında basit bir dizeyi ve sonraki yöntem çağrılarında biraz farklı bir dizeyi görüntüleyen yordamını çağırır ShowGreeting
. 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 null
ve 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.