技术主管和技术总监的区别 详解.NET中的动态编译技术[2]
详解.NET中的动态编译技术[2]
![技术主管和技术总监的区别 详解.NET中的动态编译技术[2]](http://img.zhputi.com/uploads/0993/09939f60bd499f9a7614814f2743bfcd44299.jpg)
需要解释的是 这里我们在传递编译参数时设置了GenerateInMemory为true 这表明生成的DLL会被加载在内存中(随后被默认引用入当前应用程序域) 在调用GetTime方法时我们需要加入参数 传递object类型的数组并通过Reflection的InvokeMember来调用 在创建生成的Assembly中的对象实例时 需要注意用到的命名空间是你输入代码的真实命名空间 以下是我们输入的测试代码(为了方便 所有的代码都在外部输入 动态执行时不做调整)
using System;namespace Dynamicly{ public class HelloWorld { public string GetTime(string strName) { return Wele + strName + Check in at + System DateTime Now ToString(); } }}运行附件中提供的程序 可以很容易得到一下结果
改进的执行过程
现在一切看起来很好 我们可以编译代码并把代码加载到当前应用程序域中来参与我们的活动 但你是否想过去卸载掉这段程序呢?更好的去控制程序呢?另外 当你运行这个程序很多遍的时候 你会发现占用内存很大 而且每次执行都会增大内存使用 是否需要来饩稣飧鑫侍饽兀康比恍枰裨蚰慊岱⑾终飧龆鞲久挥茫倚枰葱械囊恍┐蟮挠τ没崛梦业?a class= channel_keylink href= //server chinaitlab / target= _blank >服务器crzay 不堪重负而疯掉的
要解决这个问题我们需要来了解一下应用程序域 NET Application Domain是 NET提供的运行和承载一个活动的进程(Process)的容器 它将这个进程运行所需的代码和数据 隔离到一个小的范围内 称为Application Domain 当一个应用程序运行时 Application Domains将所有的程序集/组件集加载到当前的应用程序域中 并根据需要来调用 而对于动态生成的代码/程序集 我们看起来好像并没有办法去管理它 其实不然 我们可以用Application Domain提供的管理程序集的办法来动态加载和移除Assemblies来达到我们的提高性能的目的 具体怎么做呢 在前边的基础上增加以下步骤
lishixinzhi/Article/program/net/201311/14507- 上一篇
国外男戴耳机唱歌 有一个带耳机唱歌的搞笑视频,一个是外国的胖子在超市唱一首英文歌。一个是中国的在图书馆还什么地方唱海
有一个带耳机唱歌的搞笑视频,一个是外国的胖子在超市唱一首英文歌。一个是中国的在图书馆还什么地方唱海 有一个带耳机唱歌的搞笑视频,一个是外国的胖子在超市唱一首英文歌。一个是中国的在图书馆还什么地方唱海,
- 下一篇
垂帘听政人彘 北京 人彘,满清禁宫秘案里是不是有丽妃被做成人彘装进酒坛子里的片!
北京 人彘,满清禁宫秘案里是不是有丽妃被做成人彘装进酒坛子里的片 慈禧和慈安明明是姐妹,为何慈禧要将慈安做成人彘呢?慈禧和慈安并不是姐妹,慈禧和慈安都是咸丰的妃子,而慈安是皇后,慈禧是太子的母亲。咸丰