在延迟n秒后执行ONCE动作,WP7 C#

时间:2012-02-01 07:24:37

标签: windows-phone-7

我正在寻找一种在延迟n秒后执行动作/方法的简单方法。我发现了一些例子,但它们似乎过于复杂,因为在我的上一个平台iOS上,它只是

[self performSelector:@selector(methodname) withDelay:3];

我们非常感谢任何提示或代码段。

4 个答案:

答案 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

For more information use this link