【发布时间】:2012-10-17 01:55:32
【问题描述】:
我有一段代码会被相对频繁地调用。在它被调用之前,我需要延迟 2000 毫秒。
首先想到的是每次调用该方法时创建/处理一个计时器。
为此,我使用了一个计时器(参见代码)。我的问题是......在下面的匿名方法中调用 Dispose 有任何危险/问题吗?有更好方法的建议?
执行以下操作有什么缺点吗?坏主意?
delayTimer = new Timer() { Interval = 2000 };
{
delayTimer.Tick += (sender2, e2) =>
{
((Timer)sender2).Stop();
MessageBox.Show("Do something after 2000ms");
delayTimer.Dispose();
};
}
【问题讨论】:
-
如果在
Dispose调用之前出现异常会怎样? -
你可以同步使用 System.Threading.Thread.Sleep...
-
好点...将它包装在 Try finally 中应该涵盖了...我可以在那里处理。正在编辑... 编辑:实际上将它包装在 try 中是行不通的,因为它只会立即处理 Timer。
-
Joe 我担心调用 Thread.Sleep,因为这个应用程序中已经运行了许多线程并且它是 GUI 密集型的。我担心锁定 UI 线程。这对我来说是一个无效的担忧吗?
-
为什么是 2 秒?在执行“do_something_function()”之前是否需要执行一个过程?
标签: c# .net timer dispose anonymous