当前位置: 首页 > 编程语言 > C#

如何在WindowsPhone8中每5分钟或更长时间运行一次周期性任务Share

时间:2023-04-10 18:20:06 C#

如何在WindowsPhone8中每5分钟或更长时间运行一次周期性任务在我的WP8应用程序中,我需要下载一些json数据每5分钟。但是在MSDN中写到周期性任务每30分钟运行一次。是否有任何解决方法可以每5分钟在后台运行一次周期性任务?如果没有周期性的后台任务,还有其他方法吗?目前我正在使用定期任务下载json数据,这是我的代码放;}私人静态FlightForNotificationDataModel_flightForNotificationData;私有静态NotificationDataViewModel_notificationData;///ScheduledAgent构造函数,初始化UnhandledException处理程序///staticSc??heduledAgent(){//订阅托管异常处理程序Deployment.Current.Dispatcher.BeginInvoke(delegate{Application.Current.UnhandledException+=UnhandledException;lightForNotification});_fData=newFlightForNotificationDataModel("isostore:/tashkentAir.sdf");_notificationData=newNotificationDataViewModel("isostore:/tashkentAir.sdf");}///在未处理的异常上执行的代码privatestaticvoidUnhandledException(objectsender,ApplicationsUnhandledArgce){if(Debugger.IsAttached){//发生了未处理的异常;进入调试器Debugger.Break();}}//////运行计划任务的代理/////////调用的任务/////////当调用周期性或资源密集型任务时调用此方法///protectedoverridevoidOnInvoke(ScheduledTasktask){//TODO:添加代码以在后台执行您的任务//NotificationsViewModelnotificationData=newNotificationsViewModel();//notificationData.GetData();获取数据();Notifications=newObservableCollection();//通知完成();}privatevoidGetData(){_flightForNotificationData.GenerateNotificationUrl();如果(!String.IsNullOrEmpty(_flightForNotificationData.NotificationsUrl)){this.Url=_flightForNotificationData.NotificationsUrl;vartask=newHttpGetTask(this.Url,OnPostExecute);任务.执行();否则返回;}privatevoidOnPostExecute(NotificationsresponseObject){this.OnNotificationsDownloaded(responseObject);通知完成();}privatevoidOnNotificationsDownloaded(Notificationsnotifications){if(string.IsNullOrEmpty(notifications.HasData)){Notifications.Clear();列表notVMList=newList();foreach(TashkentAir.Models.Notificationnotinnotifications.Notifications_){NotificationViewModelnotVM=newNotificationViewModel();notVM.Date=not.Date;notVM.Direction=not.Direction;notVM.Flight_=not.Flight_;notVM.Time=not.Time;notVM.Timestamp=not.Timestamp;switch(not.Status){case0:notVM.Status="Нетданных";休息;情况1:notVM.Status="Прибыл";_flightForNotificationData.DeleteFlightForNotification(not.FlightID);休息;情况2:notVM.Status="Отправлен";休息;案例3:notVM.Status="Регистрация";休息;案例4:notVM.Status="Посадка";休息;案例5:notVM.Status="Задержан";休息;案例6:notVM.Status="Отменен";休息;默认值:notVM.Status="";休息;}ShellToasttoast=newShellToast();toast.Title=notVM.Fli正确的;toast.Content=notVM.Status;toast.Show();notVMList.Add(notVM);}notVMList=notVMList.OrderBy(n=>n.Timestamp).ToList();notVMList.ForEach(this.Notifications.Add);如果(_notificationData==null)_notificationData=newNotificationDataViewModel("isostore:/tashkentAir.sdf");_notificationData.SaveJSONNotificationsToDB(通知);}else{_flightForNotificationData.ClearAllData();_notificationData.ClearAllData();但是这个任务每30分钟运行一次Json数据是关于航班等级的,该信息在此期间失去了实际情况所以,我需要每5分钟或更频繁地运行一次我该怎么做?您可以使用推送通知或原始通知,具体取决于需要发送多少数据您可以在应用程序处于前台时使用计时器执行您想要的操作吗?但是后台任务是不可能的。Toast通知服务器端抱歉,您不能比标准间隔更频繁地运行真正的后台任务。但是,当应用程序位于前台时,您始终可以获取数据,但请注意,如果您需要获取大量数据,可能会让用户感到沮丧。我想这可能是你的工作。这。dispatcherTimer=newSystem.Windows.Threading.DispatcherTimer();dispatcherTimer.Tick+=newEventHandler(dispatcherTimer_Tick);dispatcherTimer.Interval=newTimeSpan(0,5,0);dispatcherTimer.Start();和DispatcherTimer_Tick方法privatevoiddispatcherTimer_Tick(objectsender,EventArgse){//DoyourMethod...}有关详细信息,请转到MSDNDispatcherTimer。以上就是C#学习教程的全部内容:Howtorunaregulartaskevery5minutesormorefrequentlyinWindowsPhone8,如果对你有用,需要进一步了解C#学习教程,希望你以后会多加关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: