MediaElement.CurrentState retrieves System.Exception

本文关键字:Exception System retrieves CurrentState MediaElement | 更新日期: 2023-09-27 18:12:43

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

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

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

类型为'System '的异常。在MyProject中发生异常,但未在用户代码中处理。

附加信息:应用程序调用了为不同线程编组的接口。

(Exception gfrom HRESULT: 0x8001010E (rcpe_wrong_thread))

我一直在调查这个问题,正如我所理解的,它通常出现在试图在MediaOpened事件被触发之前检索CurrentState时。实际上,这并不适合我的情况,因为这个函数是在那之后调用的。然而,我调用CurrentState属性,我得到了同样的异常,这一切最奇怪的事情是,有时工作,有时不,所以我绝对不知道什么是错误的代码:S

有谁知道怎么修理它吗?

MediaElement.CurrentState retrieves System.Exception

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

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