0

현재 온라인 오디오 스트림 (mp3)을 재생하기 위해 AudioPlaybackAgent을 사용하고 있습니다. 장치가 인터넷에 연결되어 있으면 오디오가 재생 중입니다. 이 네트워크 연결없는 내가, 내 응용 프로그램에서 play 버튼을 누를 때네트워크를 사용할 수없는 경우 AudioPlaybackAgent가 충돌 함

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를 사용하여 오디오 플레이어에서이 예외를 catch 할 수 있지만 audioplaybackagent에서 MessageBox를 사용하여 바로 표시 할 수 없습니다 (store에 앱을 제출하려고 시도하면 MS에서 허용하지 않으므로).

그래서 여기 내 질문은 :

  1. 를 내가 내 응용 프로그램 내에서 예외를 포착하고
  2. 왜 처리되지 않은 예외가 처리되지 않는 네트워크 연결이 없음을 말하는 사용자에게 예를 들어, 메시지 박스에 대한 보여줄 수있는 방법 게시 된 코드 조각으로?

도움 주셔서 감사합니다.

답변

0

내가 네트워크는 도청에 사용할 수 있는지 확인하기 위해 다음 코드를 사용하여 알아 냈어요 버튼

"플레이"
if (NetworkInterface.GetIsNetworkAvailable() == false) 
{ 
    // push some info to user... 
} 
1

오디오 재생 에이전트에서 AudioPlayer_UnhandledException 메서드를 확인 했습니까? 디버거가 연결되어있을 때 로직은 디버거가 제대로 연결되어있을 때만 오류를 처리합니다.

그러나이 상황을 처리하는 더 좋은 방법은 네트워크 연결이 있는지 확인하고 에이전트에 의존하여 사용자에게 알리고 오디오 스트리밍을 사용 중지하거나 알리십시오 네트워크가 사용 가능한지 여부.

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 
} 
+0

+1 귀하의 게시물 솔루션에 저를지도, 감사합니다! – Majky

관련 문제