Dav*_*ave 5 c# culture locale .net-4.0
我有一个有趣的情况,其中语言环境设置与我的C#应用程序混乱,因为我没有意识到像Double.Parse这样的方法不会将"1000"转换为1000,而是由于编号格式不同而做了一些意外的事情.
我的问题的一个解决方案是使用类似的东西double d = double.parse( "1000", new CultureInfo("en-US"));.目前,我没有通过CultureInfo.但是,我不想在整个代码中进行此更改,而是想知道在启动时是否可能影响我的应用程序的区域设置.
我在MSDN上发现了一篇文章说我可以使用以下代码实现这一目的:
using System.Threading;
using System.Globalization;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
Run Code Online (Sandbox Code Playgroud)
但它没有说明从主线程产生的工作线程是否也会继承父文化.
我认为情况并非如此,因为在.NET 4.5中显然有一个新 CultureInfo.DefaultThreadCurrentCulture属性为app域中的所有线程指定了文化,但在.NET 4.0中没有这样的东西.
有人可以为这个区域设置问题推荐一个很好的解决方案
我最终只是尝试了一下。在 .NET 4.0 中,新线程不会继承创建它们的线程的区域设置。我确实按照 MSDN 文档进行了设置CurrentCulture,CurrentUICulture昨天所有的测试都通过了,所以这是一件好事。