技术主管和技术总监的区别 详解.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相关文章
- 数控专业对于电脑要求 学数控程式设计和电脑程式设计区别是什么?
- 技术总监和项目总监区别 总代和总监有什么样的区别
- 技术主管和技术总监的区别 详解.NET中的动态编译技术
- 软考高级职称 计算机一级与软考的资讯科技处理员的区别?
- 技术主管和技术总监的区别 .NET 平台下的OutLook 开发技术
- 技术主管和技术总监的区别 ASP.NET开发中的验证码技术
- WEB开发NET程序员 .net程序员的盲点(二):两个属性引起的歧义
- WEB软件开发程序员 给.Net程序员和WEB程序员建议:.Net篇
- 结构体和结构类型的区别 C#.net中类与结构的区别[2]
- NET技术主管 .NET重要技术思考-DCOM 的技术
爱学记

微信收款码
支付宝收款码