0

我目前AudioPlaybackAgent用于播放在线音频流(mp3)。如果设备连接到互联网音频正在播放。但是当没有网络连接并且我按下play应用程序中的按钮时,会崩溃

An unhandled exception of type 'System.SystemException' occurred in System.Windows.ni.dll

它指向我的这部分代码

....
case UserAction.Play:
    if (player.PlayerState != PlayState.Playing)
    {
        player.Play();
    }
    break;  // << right here
....

我可以粘贴我的整个音频播放器,但它是标准生成的背景音频播放器。这里还连线的是在后台播放器初始化时有一行代码

Application.Current.UnhandledException += AudioPlayer_UnhandledException;

它应该处理未处理的异常......但它没有。

我可以使用简单的 try-catch 在音频播放器中捕获此异常,但我无法使用来自 audioplaybackagent 的 MessageBox 显示它(因为如果您尝试将应用程序提交到商店,MS 不允许它)。

所以我的问题是:

  1. 我如何在我的应用程序中捕获异常,然后向用户显示例如 MessageBox 说没有网络连接
  2. 为什么发布的一段代码没有处理未处理的异常?

谢谢你的帮助!

4

2 回答 2

1

您是否检查了AudioPlayer_UnhandledException音频播放代理中的方法?开箱即用,如果我没记错的话,它的逻辑只在连接调试器时处理错误。

但是,IMO,处理这种情况的更好方法是检查是否有网络连接并在应用程序本身中相应地禁用音频流/提醒用户,而不是依靠代理来检测和通知网络是否可用与否。

Windows Phone 提供了在Microsoft.Phone.Net.NetworkInformation中查找连接状态的方法,即DeviceNetworkInformation类。

DeviceNetworkInformation.NetworkAvailabilityChanged += new EventHandler<NetworkNotificationEventArgs>(NetworkChange);

void NetworkChange(object sender, NetworkNotificationEventArgs e)
{
    // Network changed, disable audio streaming and alert user
}
于 2013-07-10T19:57:58.407 回答
0

我已经使用以下代码来检查点击“播放”按钮时网络是否可用

if (NetworkInterface.GetIsNetworkAvailable() == false)
{
    // push some info to user...
}
于 2013-07-11T16:19:01.757 回答