使用.net反射机制实现 “热”更新动态库(dll文件)
2015-11-05 13:56
441 查看
因为考虑性能能方面的问题,一般指标在系统开启时会被预先加载到内存,但新创建的指标需要加载到内存,已有指标需要更新也需要覆盖原dll文件。新创建的指标很容易就放到指标“库”(指标dll文件存放的目录),但要覆盖原dll文件就不容易了,原因是dll文件被其他程序占用了。
其实文件被其他程序占用的情况我们经常遇到,主要是其他程序在使用文件时没有释放文件的句柄,从这里入手不能发现解决方法,就是把文件加载到内存,并且释放文件句柄。
将原加载动态库的代码:
改成:
参考: http://guangboo.org/2012/06/21/update-net-dll-file-without-restart-system
其实文件被其他程序占用的情况我们经常遇到,主要是其他程序在使用文件时没有释放文件的句柄,从这里入手不能发现解决方法,就是把文件加载到内存,并且释放文件句柄。
将原加载动态库的代码:
Assembly assembly = Assembly.LoadFile(assemblyFile);
改成:
byte[] assemblyBuf = File.ReadAllBytes(assemblyFile); Assembly assembly = Assembly.Load(assemblyBuf);
参考: http://guangboo.org/2012/06/21/update-net-dll-file-without-restart-system
相关文章推荐
- 关于惩罚因子C
- eclipse下,使用junit4,报“no Junit tests found”错误的解决办法
- iptables 命令介绍
- git操作
- MySQL创建方法错误:This function has none of DETERMINISTIC, NO SQL
- 知识有用吗
- SQL Server 更改数据/日志文件位置
- 关于Navicat和MYSQL字符集不统一出现的中文乱码问题
- 超简单的 BlueTooth 蓝牙开发实例,打开蓝牙,关闭蓝牙,配对,解除,功能齐全
- 从数字中发现规律?
- Android自定义控件之应用程序首页轮播图
- SVM入门(八)松弛变量
- 关于Parcelable 接口的使用
- 【学神】shell脚本的基本使用方法
- LayoutSubviews方法
- Java:try与finally
- IntelliJ IDEA15 配置Gradle 部署 (导入项目)
- Python 导入外部类文件
- ubuntu sougou输入法
- 项目调试3