我有一個方法返回System.Timers.Timer,然後沿代碼使用它。 但MS代碼分析給出了一個警告:CA2000:在丟失範圍之前處理對象 是否可以手動Dispose Timer並因此不發現這樣的消息?返回定時器的處理方法
謝謝!
我有一個方法返回System.Timers.Timer,然後沿代碼使用它。 但MS代碼分析給出了一個警告:CA2000:在丟失範圍之前處理對象 是否可以手動Dispose Timer並因此不發現這樣的消息?返回定時器的處理方法
謝謝!
由於System.Timers.Timer
impliments IDisposable
你可以用你的方法調用在using
語句,以確保Dispose
被調用。
using(var timer = myClass.TimerMethod())
{
// Do the work here
}
如果我使用(){}方法返回Timer的方法內的代碼塊,對象將在方法調用後Dispose,因此Timer不起作用。 – drunkcamel
完成使用後,您應該處置計時器。使用使用語句時,定時器可供您使用,直到使用語句完成爲止,並在此處處理它。你想如何使用你的計時器? –
並且我的消化不是將代碼包裝在返回計時器的方法中,而是將調用包裝到方法中,以便在完成後處理計時器。 –
System.Timers.Timer
實現IDisposable
所以只是將其放在using
:
using(var timer = MyMethodThatReturnsTimer())
{
}
如果您不能使用using
不僅僅是打電話Dispose
自己。
他說他回報了這個物體。如果他按你說的做了,會出現錯誤。我認爲他只需要在對象完成時調用Dispose。 – Candide
是的。我沿代碼使用返回的對象。問題在於我不能用(){}來包裝這段代碼。 – drunkcamel
這個muuust是一個騙局 –
CA2000是臭名昭着的不準確。如果爲方法本身而不是方法調用生成警告,請翻轉忽略位。 –