解决Windows服务修改配置文件后必须重启的问题

原文地址:http://www.cnblogs.com/jeffwongishandsome/archive/2011/04/24/2026381.html

解决方法:读取配置文件前先刷新文件

// 刷新命名节,在下次检索它时将从磁盘重新读取它。

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先刷新文件在读取对性能影响还是很大的

时间: 2024-08-29 05:00:39

解决Windows服务修改配置文件后必须重启的问题的相关文章

使用windows服务修改CPU型号(重启依然有效)

效果如下: 服务运行前: 服务运行后: 思路大概是这样: 通过修改注册表可以修改CPU型号,把服务设置成本地服务,并且开机自动启动,来实现开机自动修改处理器.通过做成系统服务开机自启达到表面上的修改,但用鲁大师等工具能检测出真实硬件. 编写服务启动代码: onStart() // 核心代码 RegistryKey key = Registry.LocalMachine; RegistryKey cpu = key.OpenSubKey("HARDWARE\\DESCRIPTION\\System

更改windows服务的配置文件(app.config)必须重启服务才能生效吗?

这个问题是前一阶段写windows服务碰到的.本来在写获取配置文件的某个配置的值的时候,通常我都是写类似下面的这么一个静态方法来获取: 1: /// <summary> 2: /// 获取每次处理记录数 3: /// </summary> 4: /// <returns></returns> 5: private static int GetRecordCount() 6: { 7: int recordCount = 10000; 8: try 9: {

Node.js热部署代码,实现修改代码后自动重启服务方便实时调试

写PHP等脚本语言的时候,已经习惯了修改完代码直接打开浏览器去查看最新的效果.而Node.js 只有在第一次引用时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,这种设计虽然有利于提高性能,却不利于开发调试. 在没有使用第三方工具的情况下,通常修改js文件后需要手动CTRL+C终止程序,再重新启动node服务,这显然是一件很繁琐的事情. 于是就出现了很多第三方的管理工具(例如:supervisor.hotnode.forever.pm2等),当文件修改保存后,它能自动重启node服务,帮

运行的后台服务修改配置文件

GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=445 结论:无论是作为全局变量,还是在AddCCCNMsgQueMsg()方法内部,每执行一次方法从配置文件里取,都是一样:服务在运行的时候,修改配置文件无法生效,必须要重启服务.有时间看一下香港平台,修改“终端升级包路径”配置后,不重启GA能否生效?1.定义一个全局变量,从配置文件中读

spring boot在Eclipse中,修改代码后无需重启就生效的配置

<build> <finalName>my-spring-boot</finalName> <!-- 指定package生成的文件名为my-spring-boot.jar --> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifac

[转].Net Windows服务安装完成后自动启动

本文转自:http://www.cnblogs.com/hb_cattle/archive/2011/12/04/2275319.html 考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包.在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便.查阅了网上的一些资料,发现有一种方法是在安装完成事件里面调用命令行的方式启动服务,这种方式虽可行,但觉得不够完美.好了,下面来看看如何更好地做到服务自动启动. 1.重写ProjectInstaller的Commit方法 usin

Windows脚本修改主机名-不重启

windows通过脚本方式修改主机名的方法有很多种,下面介绍修改注册表方式的脚本. 使用方法: 1 打开cmd,假如脚本名为ModifyHostname.bat 2 执行脚本,并加入脚本参数,其中第一个参数是新主机名,第二个参数是工作组,下面的脚本把工作组注释掉了 ModifyHostname.bat Newhostname NewWorkgrop @echo off set name=%1% set work1=%2% reg add "HKEY_LOCAL_MACHINE\System\Cu

Maven项目热部署,修改代码后不用重启tomcat服务器

只需要在pom.xml文件中添加 1 <build> 2 <finalName>MySSM</finalName> 3 <!-- 指定部署的服务器类型 --> 4 <plugins> 5 <!-- <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId

解决Windows服务无法访问网络映射盘的问题

下载工具psexec 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec 百度地址:https://pan.baidu.com/s/1Yw5fQpsxe2Tdh94R-A_2ug       提取码:y5ik 用psexec创建网络驱动器 1.运行CMD,执行 psexec -i -s cmd.exe 2.在新开的CMD窗口中运行网络映射 net use z: \\10.10.x.xxx\test /persis