前段時間我一直在研究c#應用程序,所以我不得不使用定時器。現在我正要將這個應用程序從控制檯更改爲Windows服務。我嘗試優化我的代碼,確保它能夠作爲服務工作。所以計時器...C#定時器和內存
這是非常如何我有我的定時器現在宣佈:
firstTimer = new System.Timers.Timer(5000);
firstTimer.Elapsed += FirstEvent;
firstTimer.Enabled = false;
我可以在這裏看到https://msdn.microsoft.com/en-us/library/zb0225y6%28v=vs.110%29.aspx的是T類實現了IDisposable這樣我就可以調用Dispose(),並希望一切會是okey?我的班級裏有3個計時器。如果我只是調用Dispose()上的每個定時器有或實現IDisposable上我的課,並定義Dispode方法是這樣的:
public void Dispose()
{
firstTimer.Elapsed -= FirstEvent;
secondTimer.Elapsed -= SecondEvent;
thirdTimer.Elapsed -= ThirdEvent;
firstTimer.Dispose();
secondTimer.Dispose();
thirdTimer.Dispose();
this.Dispose();
}
或者是這個壞的做法?我甚至需要這樣做firstTimer.Elapsed -= FirstEvent;
?或者定時器在-=
後自動處理?
由於我在我的課上實現了IDisposable,所以我認爲使用using
塊是正確的。
static void Main(string[] args)
{
using (Myclass mc = new Myclass())
{
mc.init();
}
}
init方法是我的計時器聲明和所有相關的東西。
總結我的問題。這種方法是否正確?我能添加一些東西嗎?也許我所做的是愚蠢的?關於配置定時器還有很多其他的話題,但我無法從中得到答案。
感謝您的洞察力。
*遞歸調用this.Dispose()*當然不是一個壞主意;它肯定會導致'StackOverFlowException'。我不會說這是個壞主意;糟糕的想法是我們說它什麼時候會起作用,但它不好。在這種情況下,它甚至不會工作。 –