多线程环境中静态类上的线程区域性
本文关键字:线程 区域性 静态类 环境 多线程 | 更新日期: 2023-09-27 17:55:35
这是我
的第一篇文章,所以请原谅任何放错的地方。
我们正在开发一个 ASP.Net 的MVC 5应用程序,为最终用户提供多种文化。Thread.CurrentThread.CurrentCulture
和Thread.CurrentThread.CurrentUICulture
在 Global.asax.cs 文件的Application_AcquireRequestState()
中设置。
我所知,对 Web 应用程序的每个请求都会触发一个新线程。我创建了一个静态类,可以根据文化轻松访问一些日期格式字符串等。
我的问题是,从可能具有不同文化的请求线程上下文(例如控制器)访问此静态类的方法和获取访问器是否有任何顾虑?静态类将具有哪种文化?
类本身没有任何文化。访问具有区域性的此类的线程,线程的区域性在类中使用(静态或非静态)。
静态实际上是指类的状态如何在不同的线程之间共享。您的静态类可以是无状态的(即它不存储数据,通常是帮助程序类型的静态类),这将为您带来的问题更少。
如果在静态类中存储任何状态,则必须小心,原因有 2 个:
- 通常,在
多线程环境中控制对静态保存数据的访问更难,
如果存储的任何数据特定于区域性,则在使用具有不同区域性的线程时,可能会在解释此数据时遇到问题。