我想触发一个计时器,以便在将来的某个时候执行一次。我想使用 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/

10-14 18:04