オブザーバーでいっぱいのリストがあります
//create the list
Class ObersverList : IList<Observer>
クラスオブザーバーには、いくつかの情報を表示する動的フォームがあります。フォームをきれいに殺す方法が必要です。
リストでは、次のようなものを実装しました
// preiodically call from programm to have always a nice updated list
observerlist.RemoveClosedHandles();
//observerlist.cs
public void RemoveClosedHandles() {
_list.RemoveAll(ObserverActivePredicate);
}
private static bool ObserverActivePredicate(Oberver o) {
return !o.HasHandle;
}
これにより、ObserverList は非常に優れたものになり、うまく機能しましたが、問題が発生しました。a) オブザーバーは強制終了されず、リストから消えただけです (私にとっては問題ありません) b) フォームは開いたままです (これは大きな問題です)
コンストラクターを使用するようなものが欲しい
//observer.cs
activate() {
HUD = new ObserverHud();
}
~Observer(){
HUD.Close();
HUD.Dispose();
}
しかし、削除中にオブザーバーデストラクタを呼び出して要素を殺す方法がわかりません。エレガントなC#の方法はありますか、それともリストをジャンプして削除する要素を見つけて破棄する必要がありますか?
乾杯