COM自動化用に作成したクラスを使用するWindowsワークフローアプリケーションがあります。COMを使用してクラスからWordとExcelを開いています。
私は現在、COMヘルパーにIDisposableを実装しており、Marshal.ReleaseComObject()を使用しています。ただし、ワークフローが失敗した場合、Dispose()メソッドは呼び出されず、WordまたはExcelのハンドルは開いたままになり、アプリケーションがハングします。
この問題の解決策は非常に簡単ですが、単に解決するのではなく、何かを学び、COMを使用する正しい方法についての洞察を得たいと思います。COMハンドルを所有するクラスのライフサイクルを処理するための「最良の」または最も効率的で安全な方法を探しています。パターン、ベストプラクティス、またはサンプルコードが役立ちます。