• .NET4.5可以给所有线程设置默认的Culture了


    How to set CurrentCulture for all threads in a domain in .NET 4.5

    Before .NET 4.5 if we wanted to set CurrentCulture for the current thread, we would need to set the culture in somewhere like application bootstrap.

    For example in the following code we set the culture to en-us:

    线程默认的是用服务器的 Cultrue

    .NET4.5之前,只能用以下代码只能针对单个线程,如果每次执行线程 都要重新设置一下。。。

    Syste
    m.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
    

    For single threaded application and for regular usages, the preceding code works fine and there is nothing to be worry about. But problems come to the surface if we are working on a multi-threaded application which needs to have more than one thread.

    Basically in .NET platform thread culture is read from Windows system culture by default and if the system culture is different from application culture, you need to somehow set the thread's culture manually for every threads.

    The same problem is even there for Tasks in Task Parallel Library which means task's operations are done in the context of the Windows system thread by default. So we need to set the current culture manually inside of each task if we are doing something relevant to localization and so on.

    Fortunately in .NET 4.5 a couple of cool properties have been added to the CultureInfo class called DefaultThreadCurrentCulture and DefaultThreadCurrentUICulture. A default culture will be set to the whole domain and for all threads by assigning a culture to these properties in application bootstrap.

    .NET4.5就简单了,在网站启动的时候 ,设置一下这个,所有线程 都会用这个默认的Culture了!

    
    
    System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("en-US");
    System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new System.Globalization.CultureInfo("en-US");
    
    [assembly: System.Web.PreApplicationStartMethod(typeof(Web.AppStart), "Main")]
    namespace Web
    {    
        public class AppStart
        {
            public static void Main()
            {
                //set default culture here
              
            }
        }
    }
    
    
    

    Have fun!

  • 相关阅读:
    Invalid character found in the request target.The valid characters are defined in RFC 7230 and RFC3986
    Calendar的用法
    spring boot+mybatis+mysql增删改查分页
    HIVE-利用ow_number() OVER(PARTITION BY)函数介绍求TOP-K
    Sqoop-从hive导出分区表到MySQL
    Sqoop--Free-form Query Imports 自由查询模式下$CONDITIONS关键字的作用
    HIVE-执行hive的几种方式,和把HIVE保存到本地的几种方式
    HIVE-分桶表的详解和创建实例
    HIVE-几道经典的hive题目
    HIVE-如何查看执行日志
  • 原文地址:https://www.cnblogs.com/handboy/p/3670370.html
Copyright © 2020-2023  润新知