windows-phone-7 – 在给定延迟后执行方法的简便方法?
发布时间:2020-12-14 04:19:19 所属栏目:Windows 来源:网络整理
导读:有没有一种简单的方法来执行一个给定的延迟之后的方法,就像开箱即用的iOS一样? 在iPhone上我会这样做: [self performSelector:@selector(connectSensor)withObject:nil afterDelay:2.5]; 然后,它将在2.5秒后执行主线程(UI线程)上的方法connectSensor.并
有没有一种简单的方法来执行一个给定的延迟之后的方法,就像开箱即用的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); ?
您可以像这样使用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线程的一个线程上运行睡眠,这样您的应用程序可以在发生延迟时自由地执行其他操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- windows查看网络常用cmd命令
- ipa上传反馈请修改应用程序info.plist文件中相关
- windows-xp – 如何为Windows XP的批处理文件设置
- Qt:父/子链中有多个窗口,父对象不会关闭子窗口?
- microsoft-office-365 – 如何更改Office 365安装
- mysql-5.5.56免安装版配置方法
- windows-7 – 在Windows 7中使用Open MPI和CUDA
- windows-services – 如何将我的应用程序作为Win
- windows-server-2008 – 这是Windows Server 200
- win-universal-app – 构建错误的UWP应用程序Mic
热点阅读