延迟操作几秒钟的最佳方法是什么? 我在stackoverflow上找到了以下代码:
var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) };
timer.Start();
timer.Tick += (_sender, _args) =>
{
timer.Stop();
operation();
};
但我认为垃圾收集器不够聪明,无法从内存中删除此计时器,因为它不知道Tick
取决于Start
/ Stop
操作和该计时器将不会再打开。
我想我首先需要删除一个事件,但为了做到这一点,我必须将lambda提取到 一个单独的方法。是否有更好的方法来简单地延迟操作?
答案 0 :(得分:0)
问题是你试图延迟的“操作”。如果它是当前的线程而不是SonerGönül的解决方案是要走的路。它还表示应用程序重新安排到另一个线程。
答案 1 :(得分:-1)
为什么不处理计时器然后设置为空?
var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) };
timer.Start();
timer.Tick += (_sender, _args) =>
{
timer.Stop();
//timer.Dispose(); <-- Not available on a dispatch timer
timer = null;
operation();
};