私は(明らかに、彼は新しいアイテムに加入して、いくつかのサーバからアイテムをリロードするために、私はクラス回収が再開される前に、廃棄可能な廃棄物を処分する必要がありますか?
class B {
IEnumerable<A> Items { get; }
void Refresh() {
Items = GetNewListWithNewJustCreatedInstances();
}
}
ユーザーが、その後、彼は最新の情報に更新を(呼び出して、多くの項目に複数回サブスクライブしていたクラス
class A {
IObservable<long> poll = new Observable.Interval(100 ms).Do((ms) => LoadData());
void Subscribe() {
poll.Subscribe();
}
}
)を持っています再び)。古いサブスクリプションはすべて自動的に破棄されるのですか、それともこのような実装が必要ですか?
class A : IDisposable {
void Dispose() {
poll.Dispose();
}
}
class B {
void Refresh() {
foreach (var item in Items) {
item.Dispose();
}
}
}
ここで修正しようとしている特定の問題がない場合は、ガベージコレクタにそのジョブを実行させてください。 –
@EdPlunkett問題を解決しようとしていません。Refresh()メソッドを実行した後にタイマーが毎回100ミリ秒実行されることが心配です。リフレッシュするたびに。私は** **アイテム**を処理していないので、**新しい**アイテムでコレクションを再作成して再作成します(ユーザーが古いアイテムを参照していれば、それは生きていると思います)。 – EwanCoder
これは簡単にテストできるはずです。それが発射を続けるならば...ええ、あなたはそれらをスワットする必要があるでしょう。 –