博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 设置线程的默认CultureInfo
阅读量:4116 次
发布时间:2019-05-25

本文共 2106 字,大约阅读时间需要 7 分钟。

Thread.CurrentCulture 影响 数字、符号、货币、日期等的格式化形式

Thread.CurrentUICulture 影响线程ResourceManager使用的资源类型

CultureInfo.UseUserOverride属性指示是否使用用户在控制面板自定义的 数字、符号、日期、货币等的格式,可以通过CultureInfo构造函数设置

新开一个新线程,默认的CurrentCulture为系统的Culture,如果要改变当前线程的Culture,需要在线程中修改 Thread.CurrentCulture值来实现,但是如果很多个线程都要一个个去改,那就呵呵了,还有那些可能不受我们控制的线程,如何去设置他们的Culture?

如果使用的.net环境是4.5及以上版本,CultureInfo提供了两个静态属性DefaultThreadCulture和DefaultThreadUICulture,一处修改即可实现所有的未显式设置Thread.CurrentCulture的线程都使用这个Default值。

如果是小于4.5的.net,可以通过反射来实现,因为CultureInfo类有两个私有的静态字段(在4.0中是s_userDefaultCulture,s_userDefaultUICulture;在更低的版本中是m_userDefaultCulture,m_userDefaultUICulture)

示例代码:

static void SetDefaultCulture(CultureInfo culture)        {            Type type = typeof(CultureInfo);            try            {                type.InvokeMember("s_userDefaultCulture",                                    BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,                                    null,                                    culture,                                    new object[] { culture });                type.InvokeMember("s_userDefaultUICulture",                                    BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,                                    null,                                    culture,                                    new object[] { culture });            }            catch { }            try            {                type.InvokeMember("m_userDefaultCulture",                                    BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,                                    null,                                    culture,                                    new object[] { culture });                type.InvokeMember("m_userDefaultUICulture",                                    BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Static,                                    null,                                    culture,                                    new object[] { culture });            }            catch { }        }

扩展阅读:

转载地址:http://eskpi.baihongyu.com/

你可能感兴趣的文章
使用CSS3 Cubic-Bezier创建动画链接悬停效果
查看>>
Fetch还是Axios,哪个更适合HTTP请求?
查看>>
File、Blob、dataURL 和 canvas 的应用与转换
查看>>
如何使用更新的HTML和CSS函数创建响应式设计
查看>>
【Vue.js入门到实战教程】13-通过 Axios 发送 Ajax 请求获取接口数据渲染组件
查看>>
你应该知道的7个有用的JavaScript高阶函数
查看>>
TypeScript的索引类型与映射类型,以及常用工具泛型的实现
查看>>
震惊!针对WEB开发者华为又出新动作!
查看>>
【Vue.js入门到实战教程】14-基于 Laravel Jetstream 的Vue 技术栈编写表单组件
查看>>
process.env前端环境变量配置教程
查看>>
页面中有间隔的方格布局如何完美实现?
查看>>
javascript中数组的22种方法
查看>>
【JavaScript 教程】浏览器模型—Web Worker
查看>>
【HTML 教程】iframe
查看>>
前端JavaScript 常见的报错及异常捕获与处理方法
查看>>
Fetch API速查表:9个最常见的API请求
查看>>
【HTML 教程】表格标签
查看>>
两小时搞定ES6:原理讲解+项目实战
查看>>
15道ES6 Promise实战练习题,助你快速理解Promise
查看>>
JavaScript DOM 编程
查看>>