Entschärfung: Kultur und asynchrone Vorgänge

Bei Apps für .NET Framework 4.6 und höhere Versionen werden CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture im ExecutionContext eines Threads gespeichert, der durch asynchrone Vorgänge verläuft.

Auswirkungen

Aufgrund dieser Änderung werden Änderungen an den Eigenschaften CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture in Aufgaben widergespiegelt, die später asynchron ausgeführt werden. Dies weicht vom Verhalten früherer .NET Framework-Versionen ab, die CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture in allen asynchronen Aufgaben auf die Systemstandardwerte zurücksetzen.

Problemumgehung

Apps, die von dieser Änderung betroffen sind, können sie auf eine von zwei Arten umgehen:

  • Durch das explizite Festlegen der gewünschten CultureInfo.CurrentCulture- oder CultureInfo.CurrentUICulture-Eigenschaft als erstem Vorgang in einer asynchronen Aufgabe.

  • Durch Entscheidung für das alte Verhalten ohne dynamisch geänderte Werte der Eigenschaften CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture durch das Hinzufügen des folgenden AppContextSwitchOverrides-Elements zur Konfigurationsdatei der Anwendung:

    <configuration>  
        <runtime>  
            <AppContextSwitchOverrides value="Switch.System.Globalization.NoAsyncCurrentCulture=true" />  
        </runtime>  
    </configuration>  
    
  • Durch Entscheidung für das alte Verhalten ohne dynamisch geänderte Werte der Eigenschaften CultureInfo.CurrentCulture und CultureInfo.CurrentUICulture durch programmgesteuertes Festlegen des folgenden Kompatibilitätsschalters:

    AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true);  
    
    AppContext.SetSwitch("Switch.System.Globalization.NoAsyncCurrentCulture", true)  
    

Siehe auch

Neuausrichtungsänderungen