非同期エージェントとウィンドウメッセージ
-
29-10-2019 - |
質問
私は現在、Microsoft'sの非同期エージェントライブラリで遊んでいます 並行性ランタイム. 。ウィンドウメッセージ、または作業が終了したことをUIスレッドに通知する他の手段を使用してタスクが完了することを示す明白な方法をまだ見つけていません。
ウィンドウハンドルとメッセージ値を渡すことができることを知っています(WM_xxx
)タスクに沿って、タスク使用に PostMessage()
UIスレッドを信号にします。これは私の意見ではやや醜く、エラーの原因です。例外が発生した場合、UIスレッドを通知するキャッチハンドラーが必要です。これは簡単に忘れられ、例外条件があまり頻繁に実行されない可能性があるため、見つけるのは困難です。
ドキュメントでは、データをUIスレッドに戻す方法について説明しています。ウィンドウメッセージを使用するのではなく、ポーリングテクニックを使用します。タスクが終了した場合、「割り込み」メソッドが利用可能な場合、ポーリングするためにタイマーを設定するのはばかげていると思います!
クロスプラットフォームライブラリではないため、これがライブラリに組み込まれていないのはちょっと奇妙です。私が理解していることから、WindowsとWindowsのみを実行するように設計されています。
機能はライブラリで利用可能ですか、それともこれを手動ロールする必要がありますか?
解決
WindowsメッセージのUnbounded_Bufferを監視し、そのメッセージを適切にディスパッチする唯一の機能を備えた1つのモニタースレッドを作成できます。このバッファーについてエージェントに知ってもらいます。
所属していません StackOverflow