我正在写一个WPF应用程序,并且在文化方面遇到了一些困难.
我想知道当没有显式设置值时,.NET应用程序在哪里获取CurrentThread.CurrentCulture的值.它不是来自Windows文化信息,因为我已经将它从en-US更改为en-GB,而没有注意到运行时应用程序的任何更改.
请帮忙!
标记
从精细手册:
查看
CultureInfo.CurrentCulture属性以了解如何确定线程的默认区域性,以及用户如何为其计算机设置区域性信息.
线程的文化是如何确定的
线程启动时,其文化初步确定如下:
通过检索
DefaultThreadCurrentCulture执行该线程的应用程序域中的属性指定的区域性,如果属性值不是,则检索该文化null.通过调用Windows
GetUserDefaultLocaleName函数.请注意,如果您设置的特定区域性与系统安装的区域性或用户的首选区域性不同,并且您的应用程序启动多个线程,那么这些线程的当前区域性将是该
GetUserDefaultLocaleName函数返回的区域性,除非您指定DefaultThreadCurrentCulture对正在执行该线程的应用程序域中的属性的文化.有关如何确定线程文化的更多信息,请参阅主题中的"文化和线程"部分
CultureInfo.
文化与线索
启动新的应用程序线程时,其当前文化和当前UI文化由当前系统文化定义,而不是由当前线程文化定义.以下示例说明了不同之处.它将应用程序线程的当前文化和当前UI文化设置为法语(法国)文化(fr-FR).如果当前文化已经是fr-FR,则该示例将其设置为英语(美国)文化(en-US).它显示三个随机数作为货币值,然后创建一个新线程,然后再显示三个随机数作为货币值.但是,正如示例中的输出所示,新线程显示的货币值不会反映法国(法国)文化的格式约定,这与主应用程序线程的输出不同.
请注意,它表示何时启动新的应用程序线程.所以,鉴于你说:
它不是来自Windows文化信息,因为我已经将它从en-US更改为en-GB,而没有注意到运行时应用程序的任何更改.
您可能想查看此答案.
| 归档时间: |
|
| 查看次数: |
6822 次 |
| 最近记录: |