異なるスレッドから同じディスパッチャーで PushFrame を呼び出すのは意味がありません。解決しようとしている問題を書いていませんが、PushFrame ベースのソリューションはおそらく間違っています。
Dispatcher オブジェクトは、コードの実行と 1 つのスレッドのイベントのディスパッチを担当します。各スレッドには、OS によって送信されるメッセージのキューがあり、マウス クリックなどの通知が含まれます。ディスパッチャーには、このキューを読み取り、適切なイベント。
メソッドからディスパッチャ ループに戻らずにメッセージを処理しなければならない場合があります。これの良い例は、呼び出し元のメソッドの制御フローを中断せずにユーザー入力に応答する (メッセージを処理する必要がある) モーダル ダイアログです。
PushFrame が行うこと - コード内でディスパッチャ ループを実行します。
各スレッドには (オプションで) 独自のメッセージ キューがあり、メッセージはそのスレッドに属するウィンドウとコントロールに固有であり、スレッドのメッセージ キューを別のスレッドから処理することはできません (Windows 自体には、それを可能にする API がありません)。別のスレッドのメッセージを読む)。
呼び出しが間違ったスレッドで発生しているため、別のスレッドから PushFrame を呼び出すことはできません。PushFrame 自体は、ディスパッチャによって管理される同じスレッドで呼び出す必要があります。別のスレッドで呼び出すことはできません。スレッドのメッセージを別のスレッドに。
Invoke または BeginInvoke を使用しても、ここでは意味がありません。これらのメソッドに渡されたデリゲートは、ディスパッチャーがメッセージを処理しているときにのみ呼び出されるためです。ディスパッチャーが既にメッセージを処理している場合は、PushFrame を呼び出してメッセージを処理させる必要はありません。
あなたが何をしようとしているのかを説明する別の質問をする場合、ここの誰かがあなたを助けることができるかもしれませんが、別のスレッドから Dispatcher.PushFrame を呼び出すことは決してうまくいきません.