7

オブジェクトのコンストラクターで、WPF mediaElement オブジェクトを作成する必要があります。

m_videoMedia = new MediaElement();

しかし、クラスは他のスレッドからインスタンス化することもできるので、使用する必要があります

Dispatcher.Invoke(DispatcherPriority.Normal,
    (Action)(() => { m_videoMedia = new MediaElement(); })); 

しかし、そのコンストラクターで適切なディスパッチャーインスタンスを取得するにはどうすればよいですか:s

4

4 に答える 4

10

ほとんどの場合、Dispatcher.CurrentDispatcher .Invoke...を使用できます。

ただし、何らかの理由でそれが機能しない場合は、クラスがコンストラクターの一部として Dispatcher への参照を受け取るようにすることができます。Dispatcher.CurrentDispatcher構築時に UI スレッドから渡すだけです。

于 2010-03-17T20:37:55.430 に答える
6

この回答で説明されているように

静的アプリケーション インスタンスから UI Dispatcher を取得できます。 Application.Current.Dispatcher

Application.Currentnull はシャットダウン シーケンス中にクリアされる可能性があるため、最初に nullを確認することをお勧めします。

また、ここに Application クラスのドキュメントがあります。

于 2013-05-02T22:58:22.213 に答える
2

ほとんどの WPF コントロールは、必要な Dispatcher プロパティを持つDispatcherObjectから派生します。したがって、基本的には、使用するコントロールからディスパッチャーを使用します。この場合、たとえば、MediaElement が追加される Window です。

于 2010-03-17T20:42:14.860 に答える
-2

プロジェクトに への参照を追加すると、WPF でSystem.Windows.Forms引き続き使用できます。Application.DoEvents()

于 2013-02-21T10:04:15.020 に答える