2

Dispatcher in WPF に関する記事を読んだことがありますが、Dispatcher の動作を非常によく説明しているものはありませんでした。皆さんへの私の質問は、タスクのキューを保持し、優先順位に従ってそれらを実行する以外に、Dispatcher が正確に何をするかということです。キューはどのように見えますか? 優先度「通常」で3つのタスクを順番に配置し、次に優先度「送信」で1つのタスクを配置するとします。どちらが最初に実行されますか? 優先度が通常の 3 つのタスクはどのような順序で実行されますか? Dispatcher に関する本当に優れたチュートリアルや、共有したい概念の証明はありますか?

4

1 に答える 1

3

これDispatcherは事実上、WPF アプリケーションの単なるメッセージ ポンプです。

従来の Windows メッセージ ポンプとは異なり、優先順位が組み込まれているため、従来の (先入れ先出し) キューではなく優先キューのように機能します。

の優先度を持つメッセージをディスパッチするとSend、 などの他の優先度を持つ他の操作の前に処理されNormalます。優先度のリストとその値は、DispatcherPriorityヘルプで確認できます。優先度の高いメッセージは常に、優先度の低いメッセージ (まだ処理されていない) の前に処理されます。

具体的な質問について:

皆さんへの私の質問は、タスクのキューを保持し、優先順位に従ってそれらを実行する以外に、Dispatcher が正確に何をするかということです。

従来の Win32 または Windows フォーム アプリケーションの通常の Windows メッセージ ポンプと同様に、Windows メッセージを処理します。優先順位付けされたキューは、標準の Windows メッセージに加えてユーザー メッセージを処理するために構築され、優先度が組み込まれています。

キューはどのように見えますか?

これは実質的に優先キューです。

優先度「通常」で3つのタスクを順番に配置し、次に優先度「送信」で1つのタスクを配置するとします。どちらが最初に実行されますか?

場合によります。その時点で他の作業が発生している場合は、そのSendタスクが最初に処理されます。他の作業が発生していない場合は、タスクNormalを送信する前にタスクが実行される可能性がありSend、その場合、順序が変更されます。ただし、Sendタスクはできるだけ早く実行されます。

優先度が通常の 3 つのタスクはどのような順序で実行されますか?

これらは、ディスパッチされたのと同じ順序で実行されます。

于 2013-03-05T17:18:40.203 に答える