在多线程环境中的静态类上的线程文化

时间:2014-04-01 08:38:56

标签: c# asp.net asp.net-mvc multithreading globalization

这是我的第一篇文章,所以原谅任何错位。

我们正在开发一个ASP.Net MVC 5应用程序,为最终用户提供多种文化。 Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICulture在Global.asax.cs文件的Application_AcquireRequestState()中设置。

据我所知,对Web应用程序的每个请求都会触发一个新线程。 我创建了一个静态类,可以根据文化提供对某些日期格式字符串等的轻松访问。

我的问题是,是否有任何关于访问此静态课程的问题'来自请求线程的上下文(例如控制器)的方法和get-accessors可能具有不同的文化?静态班级有哪种文化?

1 个答案:

答案 0 :(得分:3)

班级本身没有任何文化。它是访问具有文化的类的线程,并且线程的文化在类中使用(静态或非静态)。

Static实际上是指如何在不同的线程之间共享类的状态。您的静态类可以是无状态的(即它不存储数据,通常是辅助类型的静态类的情况),这将为您创建更少的问题。

如果您在静态类中存储任何状态,则必须小心,原因有两个:

  • 一般来说,在多线程环境中控制对静态保存数据的访问更加困难,

  • 如果您存储的任何数据是特定于文化的,那么在使用具有不同文化的线程时,您可能会遇到解释此数据的问题。