CultureInfo.DefaultThreadCurrentCulture не влияет на потоки Task.Run на C#?C#

Место общения программистов C#
Ответить
Anonymous
 CultureInfo.DefaultThreadCurrentCulture не влияет на потоки Task.Run на C#?

Сообщение Anonymous »

Вопрос:

Есть ли способ настроить культуру для всего приложения? Все текущие и новые темы?

... есть такой ответ:

В .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
Fiddle
Почему CultureInfo.DefaultThreadCurrentCulture здесь ничего не делает? Это потому, что Task.Run использует потоки из пула потоков, который породил свои потоки до того, как появился CultureInfo.DefaultThreadCurrentCulture?

Подробнее здесь: https://stackoverflow.com/questions/798 ... k-run-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»