0

CurrentStateからMediaElement数回取得する必要があります。次のような単純な関数を作成しました。

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

しかし、この関数が呼び出されるたびに、次のようになります。

タイプ 'System.Exception' の例外が MyProject で発生しましたが、ユーザー コードで処理されませんでした。

追加情報: アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。

(HRESULT からの例外: 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 に答える