É necessário descartar System.Timers.Timer se você usar um em seu aplicativo?
Estou usando a classe System.Timers.Timer em uma das classes no meu aplicativo. Eu sei que a classe Timer tem o método Dispose herdado da classe Component pai que implementa a interface IDisposable. Instâncias da classe abaixo são criadas várias vezes durante o ciclo de vida do meu aplicativo; cada um deles tem uma instância da classe Timer que gera eventos decorridos continuamente durante o ciclo de vida da classe. Devo implementar a interface IDisposable na classe que usa a classe Timer para descartar o objeto timer? (Eu vi código que não faz isso). Receio que alguns recursos não gerenciados não sejam liberados se eu usar a classe abaixo assim:
SomeClass someClass = new SomeClass();
someClass.DoSomething();
someClass = null;
A classe:
using System.Timers;
public class SomeClass
{
private Timer m_timer;
public SomeClass()
{
m_timer = new Timer();
m_timer.Interval = 1000;
m_timer.Elapsed += new ElapsedEventHandler(m_timer_Elapsed);
m_timer.AutoReset = false;
m_timer.Start();
}
public void DoSomething()
{
}
private void m_timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
//Do some task
}
catch (Exception ex)
{
//Ignore
}
finally
{
if (m_timer != null)
{
//Restart the timer
m_timer.Enabled = true;
}
}
}
}