簡體   English   中英

在ASP.NET類中處理事物

[英]Disposing of things in ASP.NET Class

我有一個使用C#類文件的站點,在該文件的頂部,我有:

JTSEntities database = new JTSEntities(); (有點麻煩的ADO.NET)。

我把它放在首位,因為我真的不喜歡一遍又一遍地寫同樣的東西。

但這引發了一個問題……因為它位於頂部,將如何處置,以及何時處置-以及在用戶關閉頁面時如何處置(或需要處置)?

堅持將包裝數據庫連接的所有內容都保留超過所需時間的做法是不好的做法。

最佳實踐是在當前操作不再需要數據庫連接(例如填充初始值等)時立即釋放它。

using (JTSEntities database = new JTSEntities())
{
    // Use database
}

如果實現IDisposable。

如果由於某種原因必須在頁面的整個過程中保持活動狀態,請確保調用適當的方法以釋放頁面關閉事件處理程序中的資源(.Close()、. Dispose()等)。

在此類中實現IDisposable ,並在Dispose()方法中處置此對象。 使用此類時,請確保完成后調用Dispose(最好使用using塊)

除此之外,您無需擔心。

public class MyClass : IDisposable
{
    protected JTSEntities database = new JTSEntities();

    public void Dispose() 
    {
        database.Dispose();
    }
}

// When calling this class

using(MyClass cls = new MyClass())
{
    // Do Stuff
}  // Dispose is automatically called here.

好的,根據屬性的類型,我們可以說它是一個instance attribute 這意味着該屬性將與具有該屬性的對象具有相同的生命周期 ,除非將其實例傳遞給另一個對象。

如果受保護,則只有所有者對象及其子對象(即從此類繼承的對象)可以訪問它。 如果您不將其作為參考參數傳遞,那么我們可以接受第一個語句:一旦清除對象,它將由GC清除。

如果僅在常規的Webform頁面生命周期中使用此對象,則不必擔心對其進行處理。 頁面生命周期將為您完成它。

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM