首页 > 解决方案 > 移除并重置静态对象

问题描述

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

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

我的应用程序变得非常缓慢。我相信也许我没有正确处理计时器对象,因此在 ram 中创建了许多对象。Evneutally,经过多次此代码,应用程序失败。

我是否在再次设置之前处理对象(使用 new 关键字)?还是我错过了一些重要的东西?

谢谢!

这是:

public static System.Timers.Timer timer;

那么这是静态的原因是因为在我的应用程序中的活动中还集成了一个回收器视图。当我在我的回收站视图中单击一个项目时,我需要从回收站视图之外但也在活动内部操作计时器。如果计时器不是公共静态的,我将不得不实例化该计时器的另一个对象,但这不会影响当前正在运行的计时器。所以也许我错了?有第三种选择吗?谢谢!

标签: c#.nettimer

解决方案


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

我怀疑你想停止启动它。


推荐阅读