基本上,当我们应用一些间隔,即5秒,我们必须等待它。
是否可以应用间隔并立即执行计时器,而不等待5秒?(我指的是间隔时间)。
有线索吗?
谢谢!
public partial class MainWindow : Window
{
DispatcherTimer timer = new DispatcherTimer();
public MainWindow()
{
InitializeComponent();
timer.Tick += new EventHandler(timer_Tick);
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void timer_Tick(object sender, EventArgs e)
{
MessageBox.Show("!!!");
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
timer.Interval = new TimeSpan(0, 0, 5);
timer.Start();
}
}
5条答案
按热度按时间rt4zxlrg1#
当然还有更优雅的解决方案,但一个比较好的方法是在初始设置时间间隔后调用timer_Tick方法,这比在每次tick时都设置时间间隔要好。
cyej8jka2#
最初将间隔设置为零,然后在后续调用时增大它。
a64a0gku3#
可以试试这个:
另一种方法是使用两个事件处理程序(以避免在每次滴答时都检查“if”):
然而,更清洁的方法是已经建议的:
gzjq41n44#
我就是这么解决的:
为我工作没有任何问题。
yqhsw0fo5#
**免责声明:**此答案不适用于OP,因为他希望使用
DispatcherTimer
但如果您没有此限制,并且可以使用另一个Timer,则有一个更干净的解决方案
您可以使用System.Threading.Timer
最重要的是设置
dueTime:0
dueTime
的文档如下调用回调之前延迟的时间量(毫秒)。指定“无限”将阻止计时器启动。指定零(0)将立即启动计时器。
你的回调是这样的
同样,这没有使用
DispatcherTimer
,但它可以解决您的问题Related answer