我在我的应用程序的一个类中使用 System.Timers.Timer 类。我知道 Timer 类具有从实现 IDisposable 接口的父 Component 类继承的 Dispose 方法。下面的类的实例在我的应用程序生命周期中被创建了很多次;它们中的每一个都有一个 Timer 类的实例,该实例在类的生命周期中不断地生成 Elapsed 事件。我应该在使用 Timer 类来处理计时器对象的类中实现 IDisposable 接口吗?(我见过根本不这样做的代码)。如果我像这样使用下面的类,我担心一些非托管资源不会被释放:
SomeClass someClass = new SomeClass();
someClass.DoSomething();
someClass = null;
班上:
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;
}
}
}
}