最近まで、.NET ランタイムは、ランタイム呼び出し可能ラッパーを作成するときに COM オブジェクトの参照カウントを 1 だけ増加させ、特定の COM オブジェクトに対してそのようなランタイム呼び出し可能ラッパーを 1 つだけ作成すると信じていました。
私が間違っていなければ、上記はMarshal.FinalReleaseComObjectとMarshal.ReleaseComObjectが実際には同じことを行うことを意味します。
ただし、今日、COM オブジェクトがコードによって適切に解放されることを確認するためのテストを作成していました。これを行うには、リリースされたと思われるオブジェクトを呼び出し、期待されるInvalidComObjectException
. の後に例外がスローされ、 の後に例外がスローされない場合があることが判明しましFinalReleaseComObject
たReleaseComObject
。
これは、.NET 2.0 ランタイムが COM オブジェクトへの複数の参照を保持できるということですか? もしそうなら、いつこれをしますか?