- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
哪种方法是使用 System.Timers.Timer 的正确方法?我的意思是...我创建了计时器,设置了时间间隔和要在 Elapsed 事件上调用的方法。
double ms = 1000;
var t = new System.Timers.Timer(ms);
t.AutoReset = false;
t.Elapsed += (sender, e) => { runTask(); };
t.Start();
接下来呢?调用应该在计时器上处理吗?我想我不能,否则 Elapsed 事件将永远不会发生。我是否应该在某个全局变量中注册 Timer 以避免丢失对它的引用,以便 GC 可以在调用 Elapsed 之前处理计时器?如果是这样,一旦处理了 Elapsed 事件(因此我的任务已执行),我该如何处理 Timer?
最佳答案
如果您在长时间运行的过程中使用定时器(例如 Web 应用程序或 Windows 服务),如果您不想发生内存泄漏,则需要确保取消订阅定时器的已用事件如果您希望垃圾收集器能够回收为 Timer 对象分配的内存,则处理程序。
System.Timers.Timer 实现 IDisposable,这里的准则是,如果你有一个实现 IDisposable 的类,任何依赖于实现 IDisposable 的对象的类都应该实现 IDisposable 本身,并在它执行时调用对象 Dispose() 方法本身被调用。
一个完美的例子确实是 System.Timers.Timer。这在幕后使用了 System.Threading.Timer,如果您查看反射器,您可以看到 System.Timers.Timer 上的 Dispose 方法的以下内容
public void Dispose()
{
this.timerBase.Dispose();
}
在这里,timerBase 只是 System.Threading.Timer 的一个实例,因此 Dispose 调用级联到实现 IDisposable 的类的所有依赖项。
关于c# - System.Timers.Timer 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955821/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!