1. 析构函数(Finalize)只能释放非托管资源, 它是由GC调用。
2. Dispose方法可以释放托管资源和非托管资源,它是由用户手动调用的。
在Dispose()中调用 GC.SuppressFinalize(this)避免重复调用析构函数(Finalize)