C#:デリゲートをガベージ コレクションから保存する (静的、オプションなし)
-
26-10-2019 - |
質問
現在、安全でない関数を指すデリゲートがガベージ コレクションされるのを避けるために、C DLL のラッパー クラスで静的デリゲートを使用しています。
これは、クラスの複数のインスタンスをサポートする必要があるまでは正常に動作していました。回避策は、静的デリゲートのリストを保持することかもしれませんが、もっと簡単な解決策を見つけたいと思っています。
解決
オブジェクトが収集されないようにするには、そのオブジェクトへの参照を維持する必要があります。
静的クラスの静的メンバーは、アプリケーションの存続期間中存続します。
たとえば、クラス メンバーの場合、クラス設計とプロジェクト設計に応じて、異なるアプローチを取ることができます。静的なリストを維持することは悪い考えではないかもしれません。
私の唯一の質問は、代表者が集まっていることをどのようにして把握できるのかということです。なぜなら、それにアクセスできるのであれば、その参照を維持しているはずだからです。いずれにせよ、記憶に残っているはずです。
他のヒント
あなたは間違いを犯したと思います:静的変数はアプリケーションのライフサイクル全体に存在し、アプリケーションの実行中に GC されることはありません。
所属していません StackOverflow