首页 > 解决方案 > 停止构造函数中先前实例的计时器?

问题描述

我有一个foo带有计时器的对象,一旦我重新分配,我想在其中停止foo。为此,现在我执行以下操作

var foo=new MyClass();

//Do stuff....

if (foo!=null){foo.timer.stop();}

foo=new MyClass();

有没有办法可以在 MyClass 构造函数中添加这种逻辑,或者更优雅/更简单的方法来做到这一点?

 public class MyClass
        {
            public DispatcherTimer timer = new DispatcherTimer();
            public MyClass()
            {
                timer.Interval = TimeSpan.FromMilliseconds(100);
                timer.Tick += Timer_Tick;
            }
            private void Timer_Tick(object sender, EventArgs e)
            {
                Console.WriteLine("I tick!!");
            }
        }

标签: c#timer

解决方案


您可以使用Finalizer,在这种情况下,它看起来像:

~MyClass {
    timer.stop();
}

推荐阅读