2016-12-31 48 views
2

我使用asp net 4.5。執行析構函數/處理代碼

我有Marker.aspx頁面和頁面Marker.aspx.cs後面的代碼。 每當發生回發Page_Load功能在後面的代碼中觸發,並創建GeoMarkup類。

GeoMarkup markupManager;  
    protected void Page_Load(object sender, EventArgs e) 
    { 
     markupManager = new GeoMarkup("constans", 
             "mapName", 
             null); 

    } 

每當回傳實現我需要的析構函數被解僱,並把裏面的析構函數該行:

markupManager.Dispose(); 

我的問題是我怎麼能實現在後面的代碼析構函數?;

+4

我認爲你應該使用'Page_Unload'代替:* Unload事件在頁面被完全渲染,發送到客戶端並且準備被丟棄之後引發。此時,響應和請求等頁面屬性將被卸載並執行清理。*將頁面發送給客戶端時,清理所有必需的資源應該是安全的。 – MarcinJuraszek

+0

你不能使用垃圾回收器嗎?我強烈建議您不要實施處置,因爲可能會發生可能會使您的代碼不便使用的某些情況。更好的等價物,仍然不是很好,可以稱爲垃圾收集器。 – Media

回答

0

你的類背後的代碼是Page的子類,它有一個虛擬的Dispose方法。

您應該重寫該方法在後面的代碼

public override void Dispose() 
{ 
    if (markupManager != null) { 
     markupManager.Dispose(); 
     markupManager = null; 
    } 
} 

HTTP管道將調用Dispose班時,他們不再需要爲當前HTTP請求的處理。