loc*_*ope 11 c# multithreading cultureinfo thread-safety
我有一个解决一些文本的多线程应用程序,它需要使用英文文化信息来解析这个文本中的数字.所以,我不想每次调用解析函数时都创建EngCulture.目前我正在将EngCulture作为参数传递,但我对此并不满意.我想将EngCulture定义为静态成员,因此它将由线程共享.
Msdn文档说"这种类型的任何公共静态(在Visual Basic中共享)成员都是线程安全的.任何实例成员都不能保证是线程安全的." 我只是使用以下函数,所以我怎么知道TryParse是否使用EngCulture的任何实例成员?
public static CultureInfo EngCulture = new CultureInfo("en-US", false);
void parser()
{
if (int.TryParse(value, NumberStyles.Number, EngCulture, out num))...
}
Run Code Online (Sandbox Code Playgroud)
尝试使用CultureInfo.GetCultureInfo("en-US")"使用指定的区域性名称检索文化的缓存,只读实例".
http://msdn.microsoft.com/en-us/library/yck8b540.aspx
或者让你的领域是只读的,所以你不需要锁定:
private static CultureInfo _culture = CultureInfo.ReadOnly(new CultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)