- 締切済み
PageクラスのDisposedイベントについて教えて
PageクラスのDisposedイベントについて教えて下さい。 VS2005 VB.Net環境でwebサイトを作成し、Default.aspxに以下のコードを書きました。 Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Label1.Text = "Page_Load通過。" End Sub Protected Sub Page_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed Label1.Text = "Page_Disposed通過。" End Sub End Class 目的は、Page_DisposedメソッドのMe.Disposedイベントはいつ発生するのか知りたいのです。 MSDNライブラリでは、 『サーバー コントロールがメモリから解放されると発生します。 これは、ASP.NET ページが要求されている場合の サーバー コントロールの有効期間における最終段階です。』 とありますが、良くわかりません。。。 ご教授下さい、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- todo36
- ベストアンサー率58% (728/1234)
>サーバー コントロールの有効期間における最終段階です。 ページの有効期間についてはこちら ASP.NET ページのライフ サイクルの概要 http://msdn2.microsoft.com/ja-jp/library/ms178472(VS.80).aspx Disposeについては記述がありませんが、「最終段階」とはUnloadの後でしょう。 >Label1.Text = "Page_Disposed通過。" Renderの後にコントロールを弄っても意味ない。 ブレークポイントとかDebug.WriteLineを使いましょう。 protected override void OnUnload(EventArgs e) { System.Diagnostics.Debug.WriteLine((new System.Diagnostics.StackTrace()).ToString()); base.OnUnload(e); } public override void Dispose() { System.Diagnostics.Debug.WriteLine("Calling Page.Dispose"); System.Diagnostics.Debug.WriteLine((new System.Diagnostics.StackTrace()).ToString()); base.Dispose(); } OnUnloadとDisposeが呼ばれる順番と、呼び出しているメソッドが分かる。 Reflector for .NETで逆コンパイルする http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/dotfuscator_02.html そのメソッドのコードを確認できる。 《結論》 Page.OnUnLoadの直後にPage.Disposeが呼ばれる。