簡體   English   中英

實施和使用IDisposable的最低要求

[英]The bare minimum of Implementing and using IDisposable

我在模仿.NET的會話,但有一些細微的差別(我的班級只有預定義的字段-字符串或整數。)。
我已經閱讀了MSDN和有關實現IDisposable的一些SO帖子,但似乎太多了。
我的計時器Elapsed事件的事件處理程序調用一個靜態方法,該方法應該處理發送給它的對象。

像這樣:


        public APISession()
        {
            timer.Elapsed +=new ElapsedEventHandler(disposeSession);
            timer.Start();
        }
        private static void disposeSession(object obj,ElapsedEventArgs elapsedEventArgs)
        { 
             //Should dispose APISession here (not obj - which is the timer, 
             //but rather -this)
        } 
        public void Dispose()
        {
            throw new NotImplementedException();
        }

補充:這是APISession的聲明:

class APISession:IDisposable

有人可以告訴我如何處置當前的APISession對象嗎?

謝謝。

如果僅在disposeSession方法中使用該對象,則必須在該對象中進行處理。 通過實現IDisposable只能處置類變量。

如果該方法實現了IDisposable,則在disposeSession方法的末尾添加以下代碼以進行處理。

if(toDispose is IDisposable)
  (toDispose as IDisposable).Dispose();

或者你可以這樣寫

IDisposable disposable = toDispose as IDisposable;
if( disposable != null )
  disposable.Dispose();

編輯添加了通過注釋更正的演員表,並使用as添加了版本並檢查是否為null

暫無
暫無

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

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