【发布时间】:2018-05-08 14:30:34
【问题描述】:
我想使用计时器在按下按钮 10 秒后触发一个事件,然后在 20 秒后自动触发另一个事件,然后让计时器在 30 秒后停止。任何帮助深表感谢。
【问题讨论】:
-
要么链接它,要么做数学
-
“然后让计时器在 30 秒后停止”是什么意思?
我想使用计时器在按下按钮 10 秒后触发一个事件,然后在 20 秒后自动触发另一个事件,然后让计时器在 30 秒后停止。任何帮助深表感谢。
【问题讨论】:
我们开始(WPF):
async void OnButtonClick(object sender, RoutedEventArgs e)
{
var cts = new CancellationTokenSource();
void OnCancel(object _, RoutedEventArgs __) => cts.Cancel();
CancelButton.Click += OnCancel;
try
{
await Task.Delay(TimeSpan.FromSeconds(2), cts.Token);
// fire first event
await Task.Delay(TimeSpan.FromSeconds(2), cts.Token);
// fire second event
await Task.Delay(TimeSpan.FromSeconds(2), cts.Token);
// stop the timer (whatever it means)
}
catch (TaskCanceledException)
{
// handle cancelled
}
finally
{
CancelButton.Click -= OnCancel;
}
}
更新:添加取消。
【讨论】: