0

私はいくつかのcorssプラットフォームライブラリを開発しており、UIスレッドでアクションを実行する必要があります。Dispatcher.RunAsyncがUIスレッドでアクションを実行できるメソッドがあることは知っていますが、それは非同期であり、コードがcorssプラットフォームであり、ライブラリがバインドされたくないため、await/async機能を使用できません。 .net4.5のawait/async機能。

UIスレッドでアクションを同期的に実行する方法はありますか?

ありがとう

4

2 に答える 2

2

Dispatcherクロスプラットフォーム ライブラリは、特定の UI (や など)に依存するべきではありませんCoreDispatcher。抽象的な「コンテキスト」を表す型があります: SynchronizationContext; しばらく前に、この件について MSDN の記事を書きました。

ライブラリが UI コンテキストを使用する前にキャプチャできる場合は、キャプチャSynchronizationContext.Currentして後でSend元のコンテキストでコードを同期的に実行するために使用できます。

于 2013-01-14T13:26:41.997 に答える
1

UIスレッドから実行する場合、実行する方法はありません。バックグラウンドスレッドから、たとえば、RunAsyncを呼び出してRunAsyncコールバックから設定した後に待機するAutoResetEventを使用してそれを行うことができます。

于 2013-01-14T03:32:18.467 に答える