删除并重置静态对象

时间:2018-10-29 11:34:44

标签: c# .net timer

我正在运行一个具有静态倒数计时的应用程序。它必须是静态的,因为对象本身需要从不同的类访问。 但是在重做这段代码一段时间之后:

timer.Stop();
timer.Dispose();
timer.Enabled = false;
timer = new System.Timers.Timer();
timer.Interval = 10;
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;

我的应用程序变得非常慢。我相信也许我没有正确设置计时器对象,因此在ram中创建了许多对象。毫无疑问,经过很多次这段代码后,该应用程序失败了。

我是在重新设置对象之前(使用new关键字)处置对象吗?还是我缺少重要的东西?

谢谢!

它是:

public static System.Timers.Timer timer;

之所以这样是静态的,是因为在我的应用程序活动中,还集成了一个recyler视图。当我在“回收者”视图中单击某个项目时,我需要从“回收者”视图外部但在活动内部也要操纵计时器。如果计时器不是公共静态计时器,则必须实例化该计时器的另一个对象,但这不会影响当前正在运行的计时器。所以也许我把这一切弄错了?还有第三种选择吗?谢谢!

1 个答案:

答案 0 :(得分:2)

在这种情况下,最好的选择是重用而不是丢弃旧计时器并创建新计时器。 这使您不必担心取消订阅事件处理程序等。

我怀疑您想StopStart来代替。