我想触发一个计时器,以便在将来的某个时候执行一次。我想使用 lambda 表达式来简化代码。所以我想做一些像......
(new System.Threading.Timer(() => { DoSomething(); },
null, // no state required
TimeSpan.FromSeconds(x), // Do it in x seconds
TimeSpan.FromMilliseconds(-1)); // don't repeat
我觉得还蛮整齐的。但在这种情况下,不会释放 Timer 对象。解决此问题的最佳方法是什么?或者,我应该在这里采用完全不同的方法吗?
最佳答案
这将完成你想要的,但我不确定它是最好的解决方案。我认为它简短而优雅,但可能比它的值(value)更令人困惑和难以理解。
System.Threading.Timer timer = null;
timer = new System.Threading.Timer(
(object state) => { DoSomething(); timer.Dispose(); }
, null // no state required
,TimeSpan.FromSeconds(x) // Do it in x seconds
,TimeSpan.FromMilliseconds(-1)); // don't repeat
关于c# - 在 future 某个时间调用单个操作的最佳方式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1568789/