[英]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.