我只是谷歌搜索,並能找到的任何東西,給我如何實現一個很好的例子,什麼是最好的情景時,我應該叫IDisposable接口何時以及如何調用IDisposable接口? asp.net MVC 3
請,如果有人可以張貼的例子並解釋這將是一個很大的幫助,可以給我一個良好的開端..提前
感謝..
我只是谷歌搜索,並能找到的任何東西,給我如何實現一個很好的例子,什麼是最好的情景時,我應該叫IDisposable接口何時以及如何調用IDisposable接口? asp.net MVC 3
請,如果有人可以張貼的例子並解釋這將是一個很大的幫助,可以給我一個良好的開端..提前
感謝..
的IDisposable
接口是爲了通過也未訪問管理的資源類使用。這讓班級有機會盡快清理那些未管理的資源。
MSDN Page for the IDisposable
Interface實際上爲這意味着什麼提供了一個很好的例子。
由於您標記了特定於mvc控制器的MVC Ill回覆。如果你沒有使用任何你需要處理的資源(即支持Dispose方法的資源,並且你沒有在代碼方法中進行處理),那麼你應該實現IDisposable並在你的對象中調用dispose。這是非常罕見的,你需要這樣做,並且通常會在控制器中使用ObjectContext或DbContext實體框架類時看到它。不過,我更喜歡用相同的方法創建和處理任何對象。
但是請注意,其中提到的基本上將調用者的責任實現爲IDisposable(即您的控制器實現它)到一個依賴注入框架,自動爲您調用dispose。
Ensuring IDisposable call on objects created in the controller and handed off to view
你的控制器使用EF應包括Dispose方法
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
見Ensuring that Database Connections Are Not Left Open
當您使用MVC腳手架,它爲您創建的Dispose方法。另請參閱Controller.Dispose Method (Boolean)
ASP.NET MVC框架在請求完成處理時調用Dispose。開發人員通常不必調用Dispose。如果從Controller派生類並且派生類使用非託管內存,託管操作系統資源(如文件)或COM對象,則應該實現Dispose以清理這些資源。您還應該調用基類的Dispose方法。 Dispose方法使Controller實例處於不可用狀態。在調用Dispose之後,您必須釋放對Controller實例的所有引用,以便垃圾回收器可以回收Controller實例佔用的內存。
有關更多信息,請參閱清理非託管資源和實施處置方法。
好的......你可以在這裏添加一個例子來使事情更清楚.. –
@ patel.milanb - 我鏈接到MSDN的例子,這很清楚。 –