isposePattern相同 } finally { base.Dispose(disposing); } } } } 当然,如果DerivedClass本身没有什么资源需要清理,那么就不需要重写Dispose方法了,正如我们平时做的一些对话框,虽然都是继承于System.Windows.Forms.Form,但我们常常不需要去重写基类Form的Dispose方法,因为本身没有什么非托管的咚咚需要释放。 了解GC的脾性在很多时候是非常必要的,起码在出现资源泄漏问题的时候你不至于手足无措。我写过一个生成excel报表的控件,其中对excel对象的释放就让我忙活了一阵。如果你做过excel开发的话,可能也遇到过结束excel进程之类的问题,特别是包装成一个供别人调用的库时,何时释放excel对象以确保进程结束是一个关键问题。当然,GC的内部机制非常复杂,还有许多内容可挖,但了解所有细节的成本太高,只需了解基础,够用就好。 · using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。 using()能自动调用Dispose方法 比如:using()会自动调用MyObject的Dispose方法 using ( MyObject myObject = new MyObject ( ) ) { Console.WriteLine ( “quit” ) ; } IDisposiable是显示释放对象的接口,实现IDisposiable接口的类,可以显示的释放对象。 ,通过编写Dispose方法来实现显式释放资源; // C# class MyClass : IDisposable { public MyClass() {} // 构造函数 ~MyClass() {} // 析构方法 (不确定的) (编译器通过重载virtual void Finalize来实现),与C++/CLI的!MyClass()等效 public void Dispose() {} // Dispose方法 public static void Test() { using(MyClass auto = new MyClass()) { /* 使用auto对象 */ } // 因为使用了using句法,编译器自动调用auto.Dispose() // 以上代码等效于: MyClass user = new MyClass(); try { /* 使用user对象 */ } finally { user.Dispose(); } } } · tasklist /m “mscor*” 这句命令是干嘛的? 列出所有使用了以” mscor”作为开头的dll或者exe的进程和模块信息 · in-proc和out-of-proc的区别 in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需要用进程间通讯来实现。 · .NET里的哪一项技术能够实现out-of-proc通讯? .Net Remoting技术或者WCF技术 · 当你在ASP.NET中运行一个组件时,它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面? Xp : aspnet_Wp.exe Windows 2000 : inetinfo.exe
Windows 2003 : w3wp.exe
|