簡體   English   中英

使用IDisposable

[英]Using of IDisposable

我有一個List<Pupil> ,每次Pupil對象引發事件Finish時。 該瞳孔將從List<Pupil>刪除。 Pupil對象實現了一個IDisposable接口。

完成事件。

    private void pupil_Finish(Pupilsender)
    {
        lock (this.pupilList)
        {
            if (this.pupilList.Contains(sender))
            {
                this.pupilList.Remove(sender);

                sender.Dispose();
            }
        }
    }

因此,在調用方法this.pupilList.Remove(sender) ,我應該使用sender.Dispose嗎? 我想要保存應用程序內存的那些操作的目的。

謝謝!

實際並不存在用於節省內存的一次性設備,而是用於顯式釋放非托管資源的一次性設備。 對象的堆內存僅由GC釋放。 因此,調用Dispose不會刪除堆上的對象。

如果沒有在其他任何地方引用發送方學生,則應致電Dispose。 否則不行。

正常的模式是讓Pupil使用其Dispose程序取消訂閱的任何事件,並可能引發Disposed事件,該事件將通知其他對象,他們應該照顧借給Pupil的任何IDisposable對象。自己使用。 如果Finish應該表現為Disposed事件,則不需要調用sender.Dispose ,因為首先引發該事件的全部原因是已經處理了sender 話雖這么說, Finish事件處理程序可能應該取消其訂閱,但目前尚未取消。

暫無
暫無

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

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