如何释放反射后的文件?

gf_iLoveU 2006-04-12 09:41:30
不知道这么说能不能看懂,我也是才用到反射,以下为大致代码
string dllName = "D;\test.dll";
Assembly a = Assembly.LoadFrom(dllName ); //编译好的动态库,实现了ITest接口
System.Type[] types = a.GetTypes();

foreach(System.Type type in types)
{
if(type.GetInterface("ITest") != null)//如果实现了ITest接口
{
object obj = System.Activator.CreateInstance(type);//创建这个对象的实例

int iReturn = ((ITest)obj).TestFunction();//调用ITest定义的TestFunciton()方法
if(iReturn == -1)//出错返回
{
return -1;
}
//这里不知道怎么写了,因为发现反射的dllName一直被系统占用,如何释放呢?
}
}
...全文
397 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbbbbb888888 2006-12-27
  • 打赏
  • 举报
回复
关注!!
antoniusguo 2006-09-26
  • 打赏
  • 举报
回复
不行的吧,除非加载到另外1个AppDomain中
然后卸载另外那个AppDomain
需要代理
Apq001 2006-09-26
  • 打赏
  • 举报
回复
最近了解到,GC.Collect有时需要调用两次才完全释放部分资源,请试试调用两次。
希望这样就能帮到你。
windinwing 2006-06-22
  • 打赏
  • 举报
回复
问题就来了,把反射缓存起来的时候没办法在次读取文件
lextm 2006-06-08
  • 打赏
  • 举报
回复
反射的意思是,将一个外部的dll的内容加载到当前程序的AppDomain里面来.

由于MS的设计人员没有考虑提供一个将这个dll在不使用时动态卸载的方法——我个人似乎也没有这个必要,所以,直到这个AppDomain被清除时才会释放dll的内容。

你可以说这是.NET的bug,但是,我觉得很多情况下都是不需要释放的。
Apq001 2006-06-08
  • 打赏
  • 举报
回复
Mark
jxnetinfo 2006-05-11
  • 打赏
  • 举报
回复
我也试过,GC.Collect不行,不知道有没有其它方法
gf_iLoveU 2006-04-13
  • 打赏
  • 举报
回复
好像不行啊,帮帮忙,谢谢了。
Knight94 2006-04-13
  • 打赏
  • 举报
回复
to 这里不知道怎么写了,因为发现反射的dllName一直被系统占用,如何释放呢?

调用“GC.Collect()”试试
Knight94 2006-04-13
  • 打赏
  • 举报
回复
参看
http://blog.csdn.net/knight94/archive/2006/04/10/657527.aspx
Knight94 2006-04-13
  • 打赏
  • 举报
回复
to int iReturn = ((ITest)obj).TestFunction();//调用ITest定义的TestFunciton()方法

不能如此调用,要通过InvokeMember来调用
gf_iLoveU 2006-04-12
  • 打赏
  • 举报
回复
我想释放,能释放么?比如Read一个文件,读完了就应该调用Close()方法关闭阿,我是这么想的,因为以上代码要频繁调用,我怕出问题。
Jianyi 2006-04-12
  • 打赏
  • 举报
回复
需要释放吗?
gf_iLoveU 2006-04-12
  • 打赏
  • 举报
回复
是D:\test.dll一直被应用程序占用,如何释放呢?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧