此標題可以爲“.NET 框架如何正確的釋放資源”。參考:https://www.cnblogs.com/fdyang/p/3456258.html
託管的內存資源,這是不需要我們操心的,系統已經爲我們進行管理了。
對於非託管的資源,這裏再重申一下,就是Stream,數據庫的連接,GDI+的相關對象,還有Com對象等等這些操作系統資源,需要我們手動去釋放。
如何去釋放,應該把這些操作放到哪裏比較好呢。.Net提供了三種方法,也是最常見的三種,大致如下:
1. 析構函數;
2. 繼承IDisposable接口,實現Dispose方法;
3. 提供Close方法。
|
析構函數 |
Dispose方法 |
Close方法 |
意義 |
銷燬對象 |
銷燬對象 |
關閉對象資源 |
調用方式 |
不能被顯示調用,會被GC調用 |
需要顯示調用 或者通過using語句 |
需要顯示調用 |
調用時機 |
不確定 |
確定,在顯示調用或者離開using程序塊 |
確定,在顯示調用時
|