使用Prism和WPF,我想允许用户从存储库中选择他们想要使用的模块.每个模块本质上都是一个附加组件,选择要使用的模块只需将其移动到DLL的"模块"文件夹中即可加载.
但是,在尝试在应用程序运行时移动DLL时,会抛出错误,因为此时DLL正在使用中.你如何解决这个问题并允许用户随意添加/删除模块?
一旦一个组件加载到一个组件中AppDomain,它就不会(不能)卸载,直到它AppDomain被拆除....我猜这是你的问题.
如果你在网上看,有一些技巧可以解决这个问题.....
创建一个额外的AppDomain,然后你可以加载你的程序集....当你完成后,你只需要调用Unload关闭AppDomain,这将释放程序集.
但是你想从其他访问的类型AppDomains有从派生MarshalByRefObject让你的对象是remoteable ....并从其他应用程序域的呼叫可以在被整理.
这里有一个非常有趣的技术....它将程序集加载到MemoryStream第一个,然后它从.NET中加载程序集MemoryStream......从而意味着磁盘上的"文件"没有被锁定.
| 归档时间: |
|
| 查看次数: |
2496 次 |
| 最近记录: |