很明显:例如,想象一下我的表单中有一个按钮。当用户单击该按钮时,应在30秒后运行某些无返回值的方法。
会有一个名为DoAfterDelay
的无返回值方法,它需要两个输入参数。第一个是要执行的方法(使用委托),另一个是时间间隔。所以我会有:
public delegate void IVoidDelegate();
static void DoAfterDelay(IVoidDelegate TheMethod, TimeSpan Interval)
{
// *** Some code that will pause the process for "Interval".
TheMethod();
}
所以,我只需要一段代码来暂停进程一段特定的时间间隔。到目前为止,我使用了以下代码:
System.Threading.Thread.Sleep(Interval);
但是这段代码对我来说不好,因为它会停止整个进程并冻结程序。我不想让程序在DoAfterDelay
方法中卡住。这就是为什么Thread.Sleep
是无用的。
那么有人能建议一个更好的方法吗?当然我已经搜索过了,但我找到的大多数解决方案都是基于使用计时器(例如这里)。但是使用计时器是我的最后选择,因为该方法应该只运行一次,使用计时器会使程序难以阅读。所以如果有更好的解决方案,我正在寻找它。或者我必须使用计时器吗?
我猜我必须玩弄线程,但不确定。所以我想知道是否有人能引导我找到一个解决方案。先谢谢了。