「CallbackOnCollectedDelegate」への対処方法

コールバックが、型 'Namespace!ClassName.TestDelegate::Invoke' のガベージ コレクションされたデリゲートで行われました。これは、アプリケーションのクラッシュ、破損、およびデータの損失を発生させる可能性があります。デリゲートをアンマネージ コードに渡すとき、デリゲートは 2 度と呼び出されないことが確実になるまでマネージ アプリケーションによって維持されなければなりません。

これはアンマネージド コードのデリゲートが、GC (ガベージ コレクション) によって破棄された後に呼び出された場合に検出されます。この問題に対処するには、デリゲートがGCの対象とならないようにします。たとえばデリゲートをクラスのフィールドとして保持するようにすれば、そのクラスが破棄されるまではGCの対象となりません。

Microsoft Learnから検索