我正在寻找一种在延迟n秒后执行动作/方法的简单方法。我发现了一些例子,但它们似乎过于复杂,因为在我的上一个平台iOS上,它只是
[self performSelector:@selector(methodname) withDelay:3];
我们非常感谢任何提示或代码段。
答案 0 :(得分:5)
您还可以使用Scheduler.Dispatcher
中的Microsoft.Phone.Reactive
:
Scheduler.Dispatcher.Schedule(MethodName, TimeSpan.FromSeconds(5));
private void MethodName()
{
// This happens 5 seconds later (on the UI thread)
}
答案 1 :(得分:4)
DispatcherTimer DelayedTimer = new DispatcherTimer()
{
Interval = TimeSpan.FromSeconds(5)
};
DelayedTimer.Tick += (s, e) =>
{
//perform action
DelayedTimer.Stop();
}
DelayedTimer.Start();
答案 2 :(得分:1)
对于Windows Phone 8
,您可以使用
await Task.Delay(milliseconds);
答案 3 :(得分:0)
DispatcherTimer timer = new DispatcherTimer();
timer.Tick += (s, e) =>
{
// do some very quick work here
// update the UI
StatusText.Text = DateTime.Now.Second.ToString();
};
timer.Interval = TimeSpan.FromSeconds(1);
timer.Start();
请注意,您在这里所做的是中断UI线程,而不是在单独的线程上运行任何东西。它不适合长期运行和cpu密集的任何东西,而是需要定期执行的东西。时钟UI更新是一个很好的例子。
此外,定时器不能保证在时间间隔发生时准确执行,但保证在时间间隔发生之前不执行定时器。这是因为DispatcherTimer操作与其他操作一样放在Dispatcher队列中。 DispatcherTimer操作执行时依赖于队列中的其他作业及其优先级。
For more information use this link
如果要将Timer用作后台任务,请使用 System.Threading.Timer代替DispatcherTimer