3

アプリケーションの自動化タスクに使用される COM オブジェクトを作成します。これが発生すると、アプリケーションが起動され、そのメイン ウィンドウが表示されます。

この問題は、ユーザーがメイン アプリケーション ウィンドウを閉じたときに発生します。COM オブジェクトへの Next Invoke 呼び出しが機能しません。問題は、失敗せず、エラーを報告しないことです。コードの次の行にデバッガーのブレークポイントを配置すると、到達することはありません。Invoke 呼び出しを try/catch で囲むと、例外はキャッチされません。リリースビルドではクラッシュするだけです。

これはどのように機能するはずですか?私は CComDispatchDriver を IDispatch* のラッパーとして使用しているので、ユーザーがアプリケーションを閉じても、AddRef が COM オブジェクトを存続させると期待できます。少なくとも HRESULT をエラーとして取得することを望んでいました。

4

1 に答える 1

0

おそらく発生したのは、終了時にアプリケーションが CoUninitialize を呼び出したことです。CoUninitialize を使用すると、すべての COM オブジェクトが破棄されるため、CoUninitialize を呼び出した後に COM オブジェクトを操作すると、クラッシュします。

于 2011-10-13T18:43:35.170 に答える