当网络不可用时,AudioPlaybackAgent崩溃

时间:2013-07-10 16:59:03

标签: c# windows-phone-7 exception exception-handling audio-playback-agent

我目前正在使用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. 为什么未处理的代码未处理未处理的异常?
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

我已经弄明白了,使用以下代码检查网络是否可用于点击“播放”按钮

if (NetworkInterface.GetIsNetworkAvailable() == false)
{
    // push some info to user...
}