Есть ли способ настроить культуру для всего приложения? Все текущие и новые темы?
... есть такой ответ:
В .NET 4.5 вы можете использовать свойство CultureInfo.DefaultThreadCurrentCulture, чтобы изменить культуру домена приложения.
Однако это MRE:
Код: Выделить всё
using System;
using System.Threading.Tasks;
using System.Globalization;
public class Program
{
public static async Task Main()
{
CultureInfo.CurrentCulture = new CultureInfo("en-US");
CultureInfo.CurrentUICulture = new CultureInfo("en-US");
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fr-FR");
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("fr-FR");
Console.WriteLine($"Main thread : {CultureInfo.CurrentCulture.Name}");
await Task.Run(() =>
{
Console.WriteLine($"Task.Run : {CultureInfo.CurrentCulture.Name}");
});
}
}
Код: Выделить всё
Main thread : en-US
Task.Run : en-US
Почему CultureInfo.DefaultThreadCurrentCulture здесь ничего не делает? Это потому, что Task.Run использует потоки из пула потоков, который породил свои потоки до того, как появился CultureInfo.DefaultThreadCurrentCulture?
Подробнее здесь: https://stackoverflow.com/questions/798 ... k-run-in-c
Мобильная версия