gpt4 book ai didi

.net - 在.Net中: best way for keeping CurrentCulture on new Thread?

转载 作者:行者123 更新时间:2023-12-02 13:44:26 27 4
gpt4 key购买 nike

在 .Net 4.0 WPF 项目中,我们需要在每个线程上保留与主线程相同的 CurrentCulture。

鉴于,我们可以使用如下代码初始化新线程的区域性:

  1. 将信息保存在变量(上下文)中

    context.CurrentCulture = Thread.CurrentThread.CurrentCulture;
    context.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
  2. 在新线程上,从保存的上下文进行初始化

    Thread.CurrentThread.CurrentCulture = context.CurrentCulture;
    Thread.CurrentThread.CurrentUICulture = context.CurrentUICulture;

但在这个 TPL、异步编程和 lambda 委托(delegate)的时代,感觉不太对劲。

是的,我们实际上可以在应用程序运行时改变文化,但那是另一回事了。

您知道我们应该初始化以跟踪的任何设置、属性或配置吗?

最佳答案

没有什么好办法,不惜一切代价避免这种情况。根本问题是文化不是 Thread.ExecutionContext 的一部分,它不会从一个线程流到另一个线程。这是一个无法解决的问题,文化是 native Windows 线程的属性。它将始终初始化为在控制面板的区域和语言小程序中选择的系统区域性。

对文化进行临时的线程本地更改很好,尝试将“进程”切换到另一种文化会导致您花费数月时间寻找错误的根源。字符串整理顺序是最严重的问题根源。

<小时/>

编辑:此问题已在 .NET 4.5 中通过 CultureInfo.DefaultThreadCurrentCulture 和 DefaultThreadCurrentUICulture 属性修复。

<小时/>

编辑:并在 .NET 4.6 中得到了真正的解决方案,文化现在从一个线程流向另一个线程。有关详细信息,请查看 MSDN 文章 CultureInfo.CurrentCulture。请注意,描述与行为不太相符,需要进行测试。

关于.net - 在.Net中: best way for keeping CurrentCulture on new Thread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com