gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:08:22 25 4
gpt4 key购买 nike

有没有一种简单的方法可以在给定的延迟后执行一个方法,就像在 iOS 中一样开箱即用?

在 iPhone 上,我会这样做:
[self performSelector:@selector(connectSensor) withObject:nil afterDelay:2.5];
然后它会调度方法 connectSensor在 2.5 秒后执行的主线程(UI 线程)上。并且因为它是在主线程上自动调度的,所以您不必担心跨线程问题。 (还有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, null, 2500); ?

最佳答案

您可以像这样使用 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 线程之外的线程上运行 sleep ,因此您的应用程序可以在发生延迟时自由地做其他事情。

关于windows-phone-7 - 在给定延迟后执行方法的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com