0

我需要CurrentStateMediaElement几次。我创建了一个如下所示的简单函数:

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

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

MyProject 中出现“System.Exception”类型的异常,但未在用户代码中处理。

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

(来自 HRESULT 的异常 g:0x8001010E (RCP_E_WRONG_THREAD))

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

有谁知道如何解决它?

4

1 回答 1

1

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

CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
<lambda for your code which should run on the UI thread>);
于 2015-09-15T09:27:35.697 回答