私はいくつかのcorssプラットフォームライブラリを開発しており、UIスレッドでアクションを実行する必要があります。Dispatcher.RunAsyncがUIスレッドでアクションを実行できるメソッドがあることは知っていますが、それは非同期であり、コードがcorssプラットフォームであり、ライブラリがバインドされたくないため、await/async機能を使用できません。 .net4.5のawait/async機能。
UIスレッドでアクションを同期的に実行する方法はありますか?
ありがとう
私はいくつかのcorssプラットフォームライブラリを開発しており、UIスレッドでアクションを実行する必要があります。Dispatcher.RunAsyncがUIスレッドでアクションを実行できるメソッドがあることは知っていますが、それは非同期であり、コードがcorssプラットフォームであり、ライブラリがバインドされたくないため、await/async機能を使用できません。 .net4.5のawait/async機能。
UIスレッドでアクションを同期的に実行する方法はありますか?
ありがとう
Dispatcher
クロスプラットフォーム ライブラリは、特定の UI (や など)に依存するべきではありませんCoreDispatcher
。抽象的な「コンテキスト」を表す型があります: SynchronizationContext
; しばらく前に、この件について MSDN の記事を書きました。
ライブラリが UI コンテキストを使用する前にキャプチャできる場合は、キャプチャSynchronizationContext.Current
して後でSend
元のコンテキストでコードを同期的に実行するために使用できます。
UIスレッドから実行する場合、実行する方法はありません。バックグラウンドスレッドから、たとえば、RunAsyncを呼び出してRunAsyncコールバックから設定した後に待機するAutoResetEventを使用してそれを行うことができます。