windows-phone-7 – 在给定延迟后执行方法的简便方法?

前端之家收集整理的这篇文章主要介绍了windows-phone-7 – 在给定延迟后执行方法的简便方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有一种简单的方法来执行一个给定的延迟之后的方法,就像开箱即用的iOS一样?

在iPhone上我会这样做:

[self performSelector:@selector(connectSensor)withObject:nil afterDelay:2.5];

然后,它将在2.5秒后执行主线程(UI线程)上的方法connectSensor.并且因为它是在主线程上自动调度的,所以您不必担心跨线程问题. (还有一个performSelectorOnBackground版本)

那么我如何在WP7中正确地做到这一点?

目前我用计时器完成了这个,但我不确定这是不是一个好的解决方案.

private Timer timer;
    private void DoSomethingAfterDaly()
    {
        // ... do something here

        timer = new Timer( (o) => Deployment.Current.Dispatcher.BeginInvoke(() => NavigationService.GoBack()),null,2500,Timeout.Infinite);            
    }

如何将其封装到扩展方法中,以便我可以调用this.Perform(MyMethod,2500); ?

@H_403_16@
您可以像这样使用BackgroundWorker:
private void Perform(Action myMethod,int delayInMilliseconds)
    {
        BackgroundWorker worker = new BackgroundWorker();

        worker.DoWork += (s,e) => Thread.Sleep(delayInMilliseconds);

        worker.RunWorkerCompleted += (s,e) => myMethod.Invoke();

        worker.RunWorkerAsync();
    }

对此方法调用如下所示:

this.Perform(() => MyMethod(),2500);

后台工作程序将在UI线程的一个线程上运行睡眠,这样您的应用程序可以在发生延迟时自由地执行其他操作.

原文链接:https://www.f2er.com/windows/364745.html

猜你在找的Windows相关文章