05 2015 档案
摘要:CLR允许异常抛出任何类型的实例,从Int32到String都可以。但是,Microsoft决定不强迫所有编程语言都抛出和捕捉任何类型的异常。因此,他们定义了System.Exception类型,并规定所有CLS相容的编程语言都必须能抛出和捕捉该类型的异常。派生自System.Exception的异...
阅读全文
摘要:本节将介绍异常处理的机制,以及进行异常处理所需的C#构造。但是,这里不准备过多的讨论细节。本章旨在提供一些在代码中何时以及如何使用使用异常处理的指导原则。想要更多的了解异常处理机制和相关的C#语言构造,请参见.NET FrameWork文档和C#语言规范。另外,.NET Framework异常处理机...
阅读全文
摘要:设计类型时,首先要想好类型的各种使用情况。类型名称通常是一个名词,例如FileStream或者StringBuilder。然后,要为类型定义属性、方法、事件等。这些成员的定义方式就是类型的编程接口。这些成员代表类本身或者类型实例可以执行的动作。行动成员通常用动词表示,例如Read,Write,Flu...
阅读全文
摘要:前面已经讨论了宿主以及宿主加载CLR的方式。同时还讨论了宿主如何告诉CLR创建和卸载AppDomain。为了使这些讨论更加具体,下面将描述一些常见的宿主和AppDomain使用情形。特别地,我要解释不同应用程序类型如何宿主CLR,以及他们如何管理AppDomain。1 可执行应用程序控制台UI应用程...
阅读全文
摘要:每个AppDomain都可关联一组回调方法;CLR开始查找AppDomain中的catch块时,这些回调方法就会得到调用。这些方法可执行日志记录操作。除此之外,宿主可利用这个机制监视AppDomain中抛出的异常。回调方法不处理异常,也不能以任何方式吃掉它;他们只是接受关于异常已经发生的一个通知。为...
阅读全文
摘要:宿主应用程序可监视AppDomain消耗的资源。有的宿主根据这种信息判断一个AppDomain的内存或CPU消耗是否超过了应有的水准,并强制卸载一个AppDomain。还可以利用监视来比较不同算法的资源消耗情况,判断哪种算法用的资源较少。由于AppDomain监视本身也会产生开销,所以宿主必须将Ap...
阅读全文
摘要:AppDomain很出色的一个能力就是它允许卸载。卸载AppDomain会导致CLR卸载AppDomain中的所有程序集。还会释放AppDomain的Loader堆。为了卸载一个AppDomain,可调用AppDomain的静态方法Unload。这将导致CLR执行一系列操作来得体的卸载指定AppDo...
阅读全文
摘要:CLR COM服务器初始化时,会创建一个AppDomain。AppDomain是一组程序集的逻辑容器。CLR初始化时创建的第一个AppDomain称为默认的AppDomain,这个默认的AppDomain只有在Windonws进程终止时才能被撤销。除了默认的AppDomain,正在使用非托管Com接...
阅读全文
摘要:本系列文章来自 CLR VIA C#.NET FrameWork在Microsoft Windows平台的顶部运行。这意味着.NET必须用Windows可以理解的技术来构建。首先,所有的托管模块和程序集文件都必须使用Windows PE文件格式,而且要么是一个Windows.exe文件,要么是一个D...
阅读全文
摘要:在一个进程中,可以调用几个方法来监视垃圾回收器。具体的说,GC类提供了以下静态方法,可调用他们查看某一代发生了多少次垃圾回收,或者托管堆中的对象当前使用了多少内存。public static long GetTotalMemory(bool forceFullCollection);public s...
阅读全文
浙公网安备 33010602011771号