读书人

用 Assembly.Load(内存储器流) 的方式

发布时间: 2013-01-11 11:57:35 作者: rapoo

用 Assembly.Load(内存流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出?
用 Assembly.Load(内存流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出?

我的猜想依据是:
1、Assembly.LoadFile(DLL文件路径)会锁定该文件,那Assembly.Load(内存流)会锁定该内存流?
2、我的程序当加载大量DLL后,内存占用确实很大。

希望懂这方面的兄弟给分析一下。。


这是加载部分的代码:

if (!File.Exists(fullPath))
{
throw new ArgumentException(fullPath + " error");
}
byte[] fsContent;
using (FileStream fs = File.OpenRead(fullPath))
{
fsContent = new byte[fs.Length];
fs.Read(fsContent, 0, fsContent.Length);

}
Assembly assembly = Assembly.Load(fsContent);

////使用loadFrom会导致bothSay 抛出转换异常。
//Assembly assembly = Assembly.LoadFrom(fullPath);
assemblies.Add(assembly.GetName().Name, assembly);
[解决办法]
用 Assembly.Load(内存储器流) 的方式加载 Assembly,内存流难道会永远不释放吗?止到AppDomian该被卸载或程序退出
[解决办法]
无论如何,程序加载了大量DLL后,肯定会升高内存。

读书人网 >C#

热点推荐