zoukankan      html  css  js  c++  java
  • 解决Windows服务修改配置文件后必须重启的问题

     
     
    解决方法:读取配置文件前先刷新文件
    // 刷新命名节,在下次检索它时将从磁盘重新读取它。
    ConfigurationManager.RefreshSection("appSettings");
    recordCount = Math.Abs(int.Parse(ConfigurationManager.AppSettings["RecordCount"]));
     
    分析:.Net读取配置文件一般是从缓存中读取,修改配置文件后并不能影响缓存中的值,而读取前刷新文件,.Net会从硬盘文件中读取而不是从缓存中读取配置文件值
     
     
    性能比较:
    前置条件:app.config中有六个配置项
     
    调用RefreshSection 后读取10000次:
    var sw = new Stopwatch();
    sw.Start();
     
    for (int i = 0; i < 10000; i++)
    {
    ConfigurationManager.RefreshSection("appSettings");
    object value = ConfigurationManager.AppSettings["RedisServer"];
    }
    TimeSpan ts = sw.Elapsed;
    string elapsedTime = String.Format("{0:00}:时 {1:00}:分 {2:00}:秒:{3:00}:毫秒",
     ts.Hours, ts.Minutes, ts.Seconds,
     ts.Milliseconds / 10);
    //00:时 00:分 07:秒:43:毫秒
    string kk = elapsedTime;
     
    不调用RefreshSection 后读取10000次:
    var sw = new Stopwatch();
    sw.Start();
     
    for (int i = 0; i < 10000; i++)
    {
    object value = ConfigurationManager.AppSettings["RedisServer"];
    }
     
    TimeSpan ts = sw.Elapsed;
    string elapsedTime = String.Format("{0:00}:时 {1:00}:分 {2:00}:秒:{3:00}:毫秒",
     ts.Hours, ts.Minutes, ts.Seconds,
     ts.Milliseconds / 10);
    //00:时 00:分 00:秒:01:毫秒
    string kk = elapsedTime;
     
     
    结论:
    使用RefreshSection先刷新文件在读取对性能影响还是很大的
  • 相关阅读:
    mysql时间日期的加、减
    IDEA 下的svn检出maven代码
    IDEA中如何显示和关闭工具栏、目录栏
    Idea集成使用SVN教程
    Python PEP8 代码规范常见问题及解决方法
    Word文档中手写签名操作说明
    19.名称空间和作用域
    18.函数的参数
    17.文件处理
    16.字符编码
  • 原文地址:https://www.cnblogs.com/gossip/p/4563841.html
Copyright © 2011-2022 走看看