C# 是什么导致BackgroundAudioPlayer.get_Position()出现System.Runtime.InteropServices.COMException?

C# 是什么导致BackgroundAudioPlayer.get_Position()出现System.Runtime.InteropServices.COMException?,c#,windows-phone-8,background-audio,C#,Windows Phone 8,Background Audio,有时我在尝试获取BackgroundAudioPlayer.Instance的位置时会遇到异常。这种情况很少发生,但我已经找到了线索。奇怪的是,这段代码在播放曲目时每秒执行一次。这一错误的原因可能是什么 我得到了这条线索 System.SystemException: HRESULT = 0xC00D36C4 ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0xC00D36C4 at Mi

有时我在尝试获取BackgroundAudioPlayer.Instance的位置时会遇到异常。这种情况很少发生,但我已经找到了线索。奇怪的是,这段代码在播放曲目时每秒执行一次。这一错误的原因可能是什么

我得到了这条线索

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)

该代码链接到MF_MEDIA_ENGINE_ERR_SRC_不受支持,但我猜您确实有声音

我发现背景音响师可能非常怪异。我用一个“安全”的扩展方法来包装我的大部分调用

范例

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

}

现在,我正在用一个“捉迷藏”来结束这个电话。请尝试{Position=_backgroundAudioPlayer.Position;}catch(SystemException e){Debugger.Break();//奇怪的情况有时调用Position会导致System.Runtime.InteropServices.COMException}谢谢,肖恩。是时候开始包装所有东西了。奇怪的是,这种情况会发生。同意,使用背景音频是很棘手的。但一旦它起作用,它就棒极了
public static PlayState PlayerStateSafe(this BackgroundAudioPlayer source)
{
    PlayState state;
    try
    {
        state = source.PlayerState;
    }
    catch (InvalidOperationException)
    {
        state = PlayState.Unknown;
    }
    return state;

}