场合
我正在使用一个包含Timer对象的类来每隔X秒调用一个方法。 此类(因为它是MVVM概念的一部分)与UserControl.XAML紧密相连。
当用户“关闭”时,不再需要“MyClass”(包括计时器)的UserControl类对象。
我假设计时器对象将继续执行方法WriteLine("Called after 15 secs")
单元垃圾收集器最终确定“MyClass”对象。
为了避免这种情况,我当然可以手动实现Dispose方法来销毁计时器对象。 (见例)
这是正确的方法吗?
(还有问题是否需要设置pullTimer = null
)
先谢谢你了!
示例
class MyClass : IDisposable {
private System.Timers.Timer pullTimer;
public MyClass(){
pullTimer = new System.Timers.Timer(15000);
pullTimer.Elapsed += (s, o) => { System.Diagnostics.Debug.WriteLine("Called after 15 secs"); };
pullTimer.Start();
}
public void Dispose() {
// Disposing action
if(pullTimer != null) {
pullTimer.Dispose();
// below required?
pullTimer = null;
}
}
}
答案 0 :(得分:0)
您应该调用计时器的=>
方法以防止它被触发。
答案 1 :(得分:0)
同意Andrew Morton和Alexander给出的答案。 此外,您还可以禁用您不希望它运行的时间。 的 TimerObject.Enable = FALSE; 强>