C++ での COM イベントの発生 - 同期または非同期?
質問
MS ATL ライブラリを使用して書かれた ActiveX コントロールがあり、 pDispatch->Invoke(..., DISPATCH_METHOD)
. 。コントロールは .NET クライアントによって使用されます。私の質問はこれです。イベントの発生は同期呼び出しですか、それとも非同期呼び出しですか?私が懸念しているのは、同期の場合、イベントを処理するアプリケーションがすぐに返さないとパフォーマンスの問題が発生する可能性があるということです。
解決
イベントを生成するコンポーネントの観点からは同期です。コントロールの実行スレッドは受信側のコードを呼び出し、その時点で物事は制御不能になります。
イベントを受信したクライアントは、すぐに戻ってくるようにする必要があります。かなりの量の作業を実行する必要がある場合は、これを非同期でスケジュールする必要があります。たとえば、Windows メッセージを投稿するか、別のスレッドを使用します。
所属していません StackOverflow