.net 能否确保所有线程都以特定区域性启动?

.net 能否确保所有线程都以特定区域性启动?,.net,multithreading,culture,.net,Multithreading,Culture,在我的windows服务中,Spring.NET创建了一些处理作业的线程。是否可以确保所有这些线程都以特定的区域性启动?或者我必须在每个线程中设置文化 在ASP.NET中,您可以在应用程序级别设置区域性(web.config中的全球化标记)。。。这可以在Windows窗体/Windows服务中完成吗?是的,您可以使用Thread.CurrentCulture 或者Application.CurrentCulture不幸的是,无法为所有未来线程全局设置区域性。默认情况下,它们将始终具有当前系统区域

在我的windows服务中,Spring.NET创建了一些处理作业的线程。是否可以确保所有这些线程都以特定的区域性启动?或者我必须在每个线程中设置文化


在ASP.NET中,您可以在应用程序级别设置区域性(web.config中的全球化标记)。。。这可以在Windows窗体/Windows服务中完成吗?

是的,您可以使用
Thread.CurrentCulture


或者
Application.CurrentCulture

不幸的是,无法为所有未来线程全局设置区域性。默认情况下,它们将始终具有当前系统区域性。因此,您必须通过
CurrentCulture
属性显式设置区域性(请注意,您可以在实际启动线程之前进行设置)



编辑:.NET 4.5将提供一个新属性,允许您为当前应用程序域中的所有新线程设置默认区域性(也可用)

当然,这也适用于您未显式创建的线程(其他组件的工作线程、终结器和线程池)。非常恼人的是,您无法为将来的线程全局设置区域性。
Thread.CurrentCulture
将仅对特定线程有效
Application.CurrentCulture
仅为(1)WinForms,以及(2)仅为
Thread.CurrentThread.CurrentCulture
的快捷方式:来自:“表示当前线程的区域性信息的CultureInfo。”