Windows phone 应用开发[5]-FrameworkDispatcher异常处理

简介:

当你在Silverlight 或是Windows phone 应用程序中通过引用Microsoft.Xan.Framework尝试通过后台任务播放一段音频文件或是记录音频时. 通常会遇到如下关于FrameworkDispatcher异常信息:

一旦尝试在后台任务记录或播放一段音频文件.总是提示Application没有调用FrameworkDisplatcher.Update()方法.当你使用XNA对象在一个Silverlight或Windows phone 应用程序时这个异常很正常.在执行播放任务前.因首先检查在后台是否已经存在该资源任务的占用.如果已经占用.则以对话框的形式来提示用户是否停止.Check Code:

 
  1. if (!Microsoft.Xna.Framework.Media.MediaPlayer.GameHasControl)  
  2. //play Background Music File 

在XnaFramework中 Xna框架的事件消息处理机制是放在一个XNA处理的消息队列中.在一个XNa Application 中实现GAme类. FrameworkDispatcher.Update()方法是自动调用Game.Update处理.

在一个没有实现GAme类的Windows phone或Silverlight应用程序中.则必须采用手动的方式调用FrameWorkDisplatcher.Update()通过XnaFrameWork消息队列自己发送消息.

Well 首先添加引用:

 
  1. using System.Windows.Threading;     
  2. using Microsoft.Xna.Framework; 

创建一个类实现IApplicationService接口:

 
  1. public partial class NuanceFunctionDemo_Form : RecognizerListener, IApplicationService     
  2. {} 
 

实现接口两个方法:

 
  1. public void StartService(ApplicationServiceContext context)     
  2. {     
  3. _frameworkDispatcherTimer.Start();     
  4. }     
  5.  
  6. public void StopService()     
  7. {     
  8. _frameworkDispatcherTimer.Stop();    

而接口调用_frameworkDispatcherTimer则是DispatcherTimer对象的实例.完整处理Code:

 
  1. private DispatcherTimer _frameworkDispatcherTimer;     
  2.  
  3. void NuanceFunctionDemo_Form_Loaded(object sender, RoutedEventArgs e)     
  4. {     
  5.     this.VoiceType_LP.ItemsSource = voiceDefineTypeList;     
  6.     this.VoiceType_LP.SelectedIndex = 0;     
  7.  
  8.     //textBoxResult.Text = "test one. test two. test three. test four.";     
  9.     textBoxServerIp.Text = AppInfo.SpeechKitServer;    
  10.     textBoxServerPort.Text = AppInfo.SpeechKitPort.ToString();    
  11.  
  12.  
  13.     _frameworkDispatcherTimer = new DispatcherTimer();    
  14.     _frameworkDispatcherTimer.Tick += FrameworkDispatcherTimer_Tick;    
  15.     _frameworkDispatcherTimer.Interval = new TimeSpan(0, 0, 3);    
  16.     FrameworkDispatcher.Update();    
  17.     speechkitInitialize();    
  18.     App.CancelSpeechKit += new CancelSpeechKitEventHandler(App_CancelSpeechKit);                    
  19. }    
  20.  
  21.  
  22. public void StartService(ApplicationServiceContext context)    
  23. {    
  24.     _frameworkDispatcherTimer.Start();    
  25. }    
  26.  
  27. public void StopService()    
  28. {    
  29.     _frameworkDispatcherTimer.Stop();    
  30. }    
  31.  
  32. void FrameworkDispatcherTimer_Tick(object sender, EventArgs e)    
  33. {    
  34.     FrameworkDispatcher.Update();    
  35. }    

这个异常在Silverlight和Windows phone 是常见的异常. 关于frameworkDispatcher处理方式 请参考MSDN用法.

参考资料:

Enable Xna Framework Events in Windows phone Application


本文转自chenkaiunion 51CTO博客,原文链接:

http://blog.51cto.com/chenkai/763293

相关文章
|
9月前
|
物联网 C++ Windows
[笔记]Windows核心编程《二十三》结构化异常处理
[笔记]Windows核心编程《二十三》结构化异常处理
112 0
|
搜索推荐 安全 Windows
Windows10系统 无法更换锁屏图片一直转圈圈(含替换系统默认锁屏壁纸教程)异常处理
Windows10系统 无法更换锁屏图片一直转圈圈(含替换系统默认锁屏壁纸教程)异常处理
1159 0
Windows10系统 无法更换锁屏图片一直转圈圈(含替换系统默认锁屏壁纸教程)异常处理
|
物联网 Java Shell
[笔记]Windows核心编程《二十三》结构化异常处理
Windows核心编程《二十三》结构化异常处理
230 0
|
Android开发 iOS开发 Windows
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
不久前,随着最后一家WP手机厂商惠普宣布取消今后Windows Phone的研发计划,以及微软官方声明对WP8.1系统今后所有升级维护的终止,WP手机,作为曾经和安卓手机、苹果手机并驾齐驱的三大智能手机之一,正式寿终正寝。
1337 0
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
|
XML 开发框架 前端开发
Windows Phone快速入门需掌握哪些能力
在此之前,先普及下Windows Phone的概念和开发工具的介绍。 Windows Phone是微软公司开发的手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Windows Phone 7.8。
144 0
Windows Phone快速入门需掌握哪些能力
|
移动开发 Android开发 开发者
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
在Build 2014大会上,微软正式发布了传闻已久的Windows Phone 8.1系统,所有的Windows Phone 8手机都可以升级,微软这次可谓是十分厚道。虽然并非迭代升级,但WP 8.1还是拥有很多重大更新,对于微软进一步完善移动平台拥有积极的意义。下面,就一起来了解一下WP 8.1的主要新特性。
242 0
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
|
编解码 前端开发 JavaScript
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
175 0
|
C# Windows API
Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32)
原文 Windows 下的高 DPI 应用开发(UWP / WPF / Windows Forms / Win32) 本文将介绍 Windows 系统中高 DPI 开发的基础知识。由于涉及到坐标转换,这种转换经常发生在计算的不知不觉中;所以无论你使用哪种 Windows 下的 UI 框架进行开发,你都需要了解这些内容,以免不断踩坑。
1889 0
|
C# Windows
支持 Windows 10 最新 PerMonitorV2 特性的 WPF 多屏高 DPI 应用开发
原文:支持 Windows 10 最新 PerMonitorV2 特性的 WPF 多屏高 DPI 应用开发 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
1377 0