WebFormのすべてのコントロールが、各ポストバックの最後に破棄されると仮定すると、持っている可能性のあるイベントハンドラを「配線しない」必要があります有線接続?例えばのでASP.NET Webフォームでイベントハンドラを「結線する」必要があります
を(あなたがイベントの処理を停止し、GCを許可したいと仮定):
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Do I need to remove this handler?
btnSubmit.ServerClick += btnSubmit_ServerClick;
}
}
イベントハンドラを持つと、イベントのあるオブジェクトの存続期間が延長されることはありません。イベントを持つオブジェクトが存続している限り、ハンドラを持つオブジェクトの存続期間が延長されます。できません。あなたが持っているオブジェクトは両方ともページを参照する必要があります(別の方法ではなく)。 – Servy
単純なタイプミス - オブジェクトのイベント(ハンドラではない)にサブスクライブします。修正されました。そして、私を信頼して、私には漏れを証明するためのダンプヒープがあります!乾杯:)セッションのオブジェクトのイベントを購読することは、オブジェクトがページへの参照を戻して、それを生きていることを意味します。 –
イベントハンドラをイベントにサブスクライブしても、ハンドラがイベントを定義したオブジェクトへの参照を持つオブジェクトにはなりません。あなたは、あなたのケースでそのような参照を明示的に作成することができました。イベントハンドラの購読を中止しても問題は解決しないということを意味するイベントサブスクリプションの結果として必ずしも発生するとは限りません。あなたのページインスタンスが、長い時間がかかっていた他のオブジェクトにイベントハンドラをサブスクライブした場合、他のオブジェクトが周りにいる限り、* that *はページを保持しますが、それは別の状況です。 – Servy