私は現在、安全でない関数を指すデリゲートがガーベッジコレクションされるのを避けるために、C DLLのラッパークラスでスタティックデリゲートを使用しています。
クラスの複数のインスタンスをサポートする必要があるまで、これはうまくいきました。回避策は、静的デリゲートのリストを保持することですが、私はより簡単な解決策を探したいと思います。C#:ガベージコレクションからデリゲートを保存する(静的オプションなし)
0
A
答えて
3
オブジェクトが収集されないようにするには、そのオブジェクトへの参照を維持する必要があります。
静的クラスの静的メンバーは、アプリケーションの有効期間中稼動します。
たとえば、クラスの設計やプロジェクト設計によっては、さまざまなアプローチがあります。静的リストを維持することは悪い考えではないかもしれません。
私の唯一の質問は、デリゲートが収集されていることをどのように把握できるかです。なぜなら、もしあなたがそれにアクセスすることができれば、その参照を維持していなければならないからです。その場合、それは記憶にとどまっていなければならない。
1
私は間違いを犯したと思います。静的変数は、アプリケーションのライフサイクル全体に存在し、アプリケーションの実行中はGCされません。
+0
基本的に私のクラスはシングルトンだったので、静的に機能しました。今私の要件は、複数のインスタンスをサポートすることです、したがって、静的はもはやオプションではありません。 – weismat
関連する問題
- 1. C#静的クラスからデリゲートを呼び出す
- 2. 静的メンバーのガベージコレクション
- 3. 静的なhtmlページにカウンタを保存
- 4. 静的フィールドにアニメーションを保存する
- 5. オプションのガベージコレクションがC++で便利なのはなぜですか?
- 6. 保存と静的な名前
- 7. なぜデリゲートは静的でなければならないのですか?
- 8. C#でのジェネリックリストのフィルタリング:静的なデリゲート(述語)の方が高速ですか?
- 9. 静的データをdb - C#に保存するのは良いですか?
- 10. optgroupから選択したオプションの名前を保存/保存する
- 11. ASP.NETガベージコレクション:静的なクラスプロパティを参照しています危険ですか?
- 12. 閉じるオプションなしでクロム拡張オプションを保存する
- 13. 静的な画像/ファイルを保存するネットワークファイルシステム
- 14. アプリケーションC#で安静なパスを保存するには?
- 15. Magento。静的ブロックをカスタムフォームから保存します。ストアを保存できません
- 16. Android:Firebaseを使用して静的データを保存する
- 17. 目的のcのuiwebviewからPDFを保存する方法
- 18. レンダリングビューを静的ファイルとして保存する方法は?
- 19. クラスから静的変数への値を別のクラスに保存する
- 20. データを保持しないC#での同時静的キュー
- 21. -gccの静的オプション?
- 22. ユーザーコントロール静的名オプション?
- 23. タブレット(静的およびAndroid)の静的なウェブコンテンツの保存と参照
- 24. InkToolbarオプションを保存する
- 25. デリゲート内の静的オブジェクトのロックが機能していない
- 26. 保存Applicationクラスの静的コンテキスト変数
- 27. UIActivity Controlerからビデオを保存するオプションを削除する
- 28. モバイルアプリ - バックエンドに比較的静的なjsonファイルを保存してバージョン
- 29. 静的ブラウザの画像をローカルフォルダに保存します
- 30. 静的フィールドで自身を参照するクラスをガベージコレクションできますか?
あなたのアプリケーションのクラッシュによってガベージコレクションが起こっているのが見えます;-) – weismat