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

Definition

Ruft die standardmäßige Benutzeroberflächenkultur für Threads in der aktuellen Anwendungsdomäne ab oder legt diese fest.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

Eigenschaftswert

Die Standardkultur der Benutzeroberfläche für Threads in der aktuellen Anwendungsdomäne oder null, wenn die aktuelle Systemkultur der Benutzeroberfläche die standardmäßige Threadkultur der Benutzeroberfläche in der Anwendungsdomäne ist.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.

Ausnahmen

Bei einem SET-Vorgang ist der Eigenschaftswert Name ungültig.In a set operation, the Name property value is invalid.

Beispiele

Im folgenden Beispiel wird das Standardverhalten der .NET Framework beim Definieren der aktuellen Kultur eines neuen Threads veranschaulicht.The following example illustrates the default behavior of the .NET Framework in defining the current culture of a new thread. Er verwendet englische und russische Sprachressourcen.It uses English and Russian language resources. Die folgende Textdatei mit dem Namen "greetingstrings. txt" enthält die englischsprachigen Ressourcen:The following text file named GreetingStrings.txt contains the English language resources:

greeting =Hello again!  
newGreeting=Hello!  

Sie wird in eine binäre RESOURCES-Datei namens greetingstrings. resources kompiliert, indem der Ressourcen Datei-Generator mit dem folgenden Befehl verwendet wird.It is compiled to a binary .resources file named GreetingStrings.resources by using the Resource File Generator with the following command.

resgen greetingstrings.txt  

Die folgende Textdatei mit dem Namen GreetingStrings.ru-ru. txt enthält die russischsprachigen Ressourcen:The following text file named GreetingStrings.ru-RU.txt contains the Russian language resources:

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

Sie wird in eine binäre RESOURCES-Datei mit dem Namen GreetingStrings.ru-ru. resources kompiliert, indem der Ressourcen Datei-Generator mit dem folgenden Befehl verwendet wird.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  

Der unten gezeigte Anwendungscode befindet sich in einer Datei namens "example1". vb oder example1.cs.The application code, which is shown below, resides in a file named Example1.vb or Example1.cs. Sie wird mit dem folgenden Befehl für den Visual Basic Compiler in eine ausführbare Datei kompiliert:It is compiled to an executable by using the following command for the Visual Basic compiler:

vbc Example1.vb /resource:GreetingStrings.resources  

Für den C# Compiler ist der Befehl ähnlich:For the C# compiler, the command is similar:

csc /resource:GreetingStrings.resources Example1.cs  

Dadurch wird eine Assembly erstellt, die den ausführbaren Code des Beispiels zusammen mit den Ressourcen für die Fall backkultur enthält.This creates an assembly that includes the example's executable code along with the resources for its fallback culture. Sie können auch den Assembly Linker verwenden, um die Ressourcen Datei für die Kultur Russisch (Russische Föderation) mit dem folgenden Befehl zu erstellen: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  

Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur auf Russisch (Russische Föderation) auf allen Systemen fest, mit Ausnahme derjenigen, auf denen die Standardsystem Kultur bereits Russisch (Russische Föderation) ist.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). Wenn die Standardsystem Kultur bereits Russisch (Russische Föderation) ist, legt der Code die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur auf Englisch (USA) fest.If the default system culture is already Russian (Russia), the code sets the current culture and the current UI culture to English (United States). Anschließend wird die ShowGreeting -Routine aufgerufen, die beim ersten Aufrufen eine einfache Zeichenfolge und bei nachfolgenden Methoden aufrufen eine etwas andere Zeichenfolge anzeigt.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. Anschließend wird ein neuer Thread erstellt, in dem auch die ShowGreeting Routine ausgeführt wird.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!

Wie die Ausgabe des Beispiels zeigt, zeigt der Haupt Thread, wenn das Beispiel auf einem Computer ausgeführt wird, dessen System Kultur Englisch (USA) ist, die ursprüngliche Zeichenfolge in Russisch an.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. Da die Kultur des Arbeits Threads jedoch von der aktuellen Windows-System Kultur abgeleitet ist und nicht von der aktuellen Kultur der Anwendung, zeigt der Arbeits Thread seine Zeichenfolge in englischer Sprache an.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.

Im folgenden Beispiel werden die DefaultThreadCurrentCulture - DefaultThreadCurrentUICulture Eigenschaft und die-Eigenschaft verwendet, um die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur eines neuen Anwendungs Threads zu definieren.The following example uses the DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture properties to define the current culture and current UI culture of a new application thread.

Im Beispiel werden dieselben Ressourcen Dateien wie im vorherigen Beispiel verwendet.The example uses the same resources files as the previous example. Die Befehle zum Kompilieren und zum Einbetten der lokalisierten russischen Sprachressourcen in eine Satellitenassembly sind ebenfalls identisch, mit dem Unterschied, dass sich der Name der ausführbaren Assembly ändert.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.

Beim Start legt das Beispiel die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur auf Russisch (Russische Föderation) auf allen Systemen fest, mit Ausnahme derjenigen, auf denen die Standardsystem Kultur bereits Russisch (Russische Föderation) ist.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). Wenn die Standardsystem Kultur bereits Russisch (Russische Föderation) ist, werden die aktuelle Kultur und die aktuelle Benutzeroberflächen Kultur auf Englisch (USA) festgelegt.If the default system culture is already Russian (Russia), it sets the current culture and the current UI culture to English (United States). Anschließend wird die ShowGreeting -Routine aufgerufen, die beim ersten Aufrufen eine einfache Zeichenfolge und bei nachfolgenden Methoden aufrufen eine etwas andere Zeichenfolge anzeigt.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. Anschließend wird ein neuer Thread erstellt, in dem auch die ShowGreeting Routine ausgeführt wird.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:
'       Привет!
'       Еще раз привет!

Wie die Ausgabe des Beispiels zeigt, werden beim Ausführen des Beispiels auf einem Computer, dessen System Kultur Englisch (USA) ist, sowohl der Haupt Thread als auch der Arbeits Thread ihre Zeichen folgen in der russischen Sprache anzeigen.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.

Hinweise

.NET Framework 4.NET Framework 4 In und früheren Versionen ist die Benutzeroberflächen Kultur aller Threads standardmäßig auf die Windows-System Kulturfest gelegt.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. Bei Anwendungen, deren aktuelle Benutzeroberflächen Kultur von der Standardsystem Kultur abweicht, ist dieses Verhalten oft nicht erwünscht.For applications whose current UI culture differs from the default system culture, this behavior is often undesirable. In der können Sie DefaultThreadCurrentUICulture mit der-Eigenschaft die Standard Kultur der Benutzeroberfläche aller Threads in einer Anwendungsdomäne definieren. .NET Framework 4.5.NET Framework 4.5In 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.

Wichtig

Wenn Sie die Benutzeroberflächen Kultur von vorhandenen Threads, die in einer Anwendungsdomäne ausgeführt werden, nicht explizit fest DefaultThreadCurrentUICulture gelegt haben, wird durch das Festlegen der-Eigenschaft auch die Kultur dieser Threads geändert.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. Wenn diese Threads jedoch in einer anderen Anwendungsdomäne ausgeführt werden, wird ihre Kultur durch die DefaultThreadCurrentUICulture -Eigenschaft in dieser Anwendungsdomäne oder, wenn kein Standardwert definiert ist, von der Standardsystem Kultur definiert.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. Aus diesem Grund wird empfohlen, die Kultur des Hauptanwendungs Threads stets explizit festzulegen und sich nicht auf die DefaultThreadCurrentUICulture -Eigenschaft zu verlassen, um die Kultur des Hauptanwendungs Threads zu definieren.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.

Sofern Sie nicht explizit festgelegt wird, ist der DefaultThreadCurrentUICulture Wert der null-Eigenschaft, und die aktuelle Kultur aller Threads in einer Anwendungsdomäne, denen keine explizite Kultur zugewiesen wurde, wird durch die standardmäßige Windows-System Kultur definiert.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.

Weitere Informationen zu Kulturen, Threads und Anwendungs Domänen finden Sie in den Abschnitten "Kultur und Threads" und "Kultur und Anwendungs Domänen" auf CultureInfo der Referenzseite.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.

Gilt für:

Siehe auch