2011-09-30 47 views
0

我只是谷歌搜索,並能找到的任何東西,給我如何實現一個很好的例子,什麼是最好的情景時,我應該叫IDisposable接口何時以及如何調用IDisposable接口? asp.net MVC 3

請,如果有人可以張貼的例子並解釋這將是一個很大的幫助,可以給我一個良好的開端..提前

感謝..

回答

1

IDisposable接口是爲了通過也未訪問管理的資源類使用。這讓班級有機會盡快清理那些未管理的資源。

MSDN Page for the IDisposable Interface實際上爲這意味着什麼提供了一個很好的例子。

+0

好的......你可以在這裏添加一個例子來使事情更清楚.. –

+2

@ patel.milanb - 我鏈接到MSDN的例子,這很清楚。 –

1

由於您標記了特定於mvc控制器的MVC Ill回覆。如果你沒有使用任何你需要處理的資源(即支持Dispose方法的資源,並且你沒有在代碼方法中進行處理),那麼你應該實現IDisposable並在你的對象中調用dispose。這是非常罕見的,你需要這樣做,並且通常會在控制器中使用ObjectContext或DbContext實體框架類時看到它。不過,我更喜歡用相同的方法創建和處理任何對象。

但是請注意,其中提到的基本上將調用者的責任實現爲IDisposable(即您的控制器實現它)到一個依賴注入框架,自動爲您調用dispose。

Ensuring IDisposable call on objects created in the controller and handed off to view

3

你的控制器使用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實例佔用的內存。

有關更多信息,請參閱清理非託管資源和實施處置方法。

相關問題