如何释放 Assembly 调用的dll文件

musclecn 2008-03-31 04:21:54
如何释放 Assembly 调用的dll文件
Form loadfm()
{
String pjname="pjh.dll";
Assembly assm = Assembly.LoadFrom(pjname);
Type TypeToLoad= assm.GetType("htcn.piaoju.money");
object obj;
obj = Activator.CreateInstance(TypeToLoad);
Form fm = null;

fm = (Form)obj;
return fm;
}

如果释放Assembly?
...全文
477 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
musclecn 2008-04-03
  • 打赏
  • 举报
回复
private byte[] loadFile(string filename)
{
FileStream fs = new FileStream(filename, FileMode.Open);
byte[] buffer = new byte[(int)fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
fs = null;
return buffer;

}
musclecn 2008-04-03
  • 打赏
  • 举报
回复
问题解决:

AppDomainSetup ads = new AppDomainSetup();
ads.ShadowCopyFiles = "true";
AppDomain.CurrentDomain.SetShadowCopyFiles();
Evidence adevidence = AppDomain.CurrentDomain.Evidence;
AppDomain newDomain = AppDomain.CreateDomain("newDomain", adevidence, ads);
newDomain.SetShadowCopyFiles();

byte[] rawAssembly = loadFile(pjname);
Assembly assm = newDomain.Load(rawAssembly, null);
object obj = assm.CreateInstance("htcn.piaoju.money");
Form fm = null;
fm = (Form)obj;
return fm;
changjiangzhibin 2008-04-01
  • 打赏
  • 举报
回复
次序好似:LoadFrom-->CreateInstance-->GetType
musclecn 2008-04-01
  • 打赏
  • 举报
回复
有没有实例
hanjun1024 2008-04-01
  • 打赏
  • 举报
回复

//创建AppDomain
AppDomain dom = AppDomain.CreateDomain("execDom");
//加载Assembly
dom.ExecuteAssembly(path);
//使用后释放AppDomain
AppDomain.Unload(dom);
hanjun1024 2008-03-31
  • 打赏
  • 举报
回复
最好新建一个AppDomain,然后在那个AppDomain里加载Assembly。用完以后释放AppDomain。貌似Assembly不能单独释放,只能通过释放AppDomain来实现。

110,536

社区成员

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

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

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