2

BackgroundAudioPlayer.Instance の位置を取得しようとすると、例外が発生することがあります。めったに発生しませんが、StackTrace を取得できました。奇妙なことに、このコードはトラックの再生中に毎秒実行されます。このエラーの原因は何ですか?

この StackTrace を取得しています。

System.SystemException: HRESULT = 0xC00D36C4 ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0xC00D36C4 at 
Microsoft.Phone.BackgroundAudio.Interop.IAudioPlaybackManager.get_CurrentPosition() at 
Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.get_Position() --- End of inner exception stack trace --- at 
Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.get_Position() at 
MC.PodCast.Common.ViewModel.PlayerViewModel.UpdateTrackPosition() at 
MC.PodCast.Common.ViewModel.PlayerViewModel.ReactToBackgroundAudioPlayer() at 
MC.PodCast.Common.ViewModel.PlayerViewModel.Initialize() at 
MC.PodCast.Common.ViewModel.PlayerViewModel.<<get_InitializeCommand>b__5>d__6.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)

もちろん、私が使用しているコードは単純なものです。

public void UpdateTrackPosition()
{
    if (_backgroundAudioPlayer != null && _backgroundAudioPlayer.Track != null)
    {
        Position = _backgroundAudioPlayer.Position;
    }
    else
    {
        Position = null;
    }
}
4

1 に答える 1

3

そのコードは MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED にリンクされていますが、サウンドがあると思います。

BackgroundAudioPlyer が非常に奇妙である可能性があることがわかりました。私はほとんどの呼び出しを「安全な」拡張メソッドでラップしています。

public static PlayState PlayerStateSafe(this BackgroundAudioPlayer source)
{
    PlayState state;
    try
    {
        state = source.PlayerState;
    }
    catch (InvalidOperationException)
    {
        state = PlayState.Unknown;
    }
    return state;

}
于 2013-07-17T13:44:24.103 に答える