应用程序的CurrentCulture和线程的CurrentCulture之间的区别

6
1个回答

5
Application.CurrentCulture 代理到 Thread.CurrentThread.CurrentCulture("获取或设置当前线程的区域信息"),因此它仅为应用程序的主线程设置它。在 .NET 4.5 中,您可以使用CultureInfo.DefaultThreadCurrentCulture 属性来更改 AppDomain 的区域设置。

这里是 Application.CurrentCulture源代码

public static CultureInfo CurrentCulture 
{
    get {
        return Thread.CurrentThread.CurrentCulture;
    }
    set {
        Thread.CurrentThread.CurrentCulture = value;
    }
}

1
DefaultThreadCurrentCulture 不会改变任何东西。它将被设置为在该时间实例之后创建的线程。也就是说,现有线程的文化不会受到影响。 - Sriram Sakthivel
@SriramSakthivel: 我因为仍在使用.NET 4而没有使用过那个属性,但是文档说的不同(例如:_"如果您尚未明确设置正在应用程序域中执行的任何现有线程的区域性,则设置DefaultThreadCurrentCulture属性也会更改这些线程的区域性"_)。 - Tim Schmelter
@TimSchmelter 是的,文档上说的不太一样。也许我错了,但是那个属性真的很令人困惑。事实证明,如果你之前没有设置过它,它会覆盖现有线程的区域设置。 - Sriram Sakthivel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接