MediaElement.CurrentState 检索 System.Exception

MediaElement.CurrentState retrieves System.Exception

我需要多次从 MediaElement 中获取 CurrentState。我创建了一个简单的函数,如下所示:

    private string getCurrentState(MediaElement m)
    {
        return m.CurrentState.ToString();
    }

但是每次调用这个函数时我都会得到这个:

An exception of type 'System.Exception' occurred in MyProject but was not handled in user code.

Additional information: The application called an interface that was marshalled for a different thread.

(Exception gfrom HRESULT: 0x8001010E (RCP_E_WRONG_THREAD))

我一直在调查这个问题,据我了解,它通常出现在 MediaOpened 事件被触发之前尝试检索 CurrentState 时。实际上,这不适合我的情况,因为此函数在此之后被调用。但是我调用 CurrentState属性 我得到了同样的异常,最奇怪的是有时有效,有时无效,所以我完全不知道代码中有什么问题: S

有人知道如何解决吗?

您正在尝试从非ui 线程获取状态。您应该重新设计代码,使其不与后台线程(任务)中的 MediaElement 交互。 或者您可以将 getCurrentState 方法调用包装到 Despatcher

CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
<lambda for your code which should run on the UI thread>);