Interpretiert anders, es gibt mehr Komplexität für diese Frage als das Auge trifft.
Sicher Disposed
wird aufgerufen, aber tut es alles? Es kommt darauf an.
Wenn Sie das Disposed
Ereignis einer Seite oder eines Steuerelements abonniert haben und darauf warten, dass es pro Anfrage aufgerufen wird, könnten Sie eine Überraschung erleben. Ja, technisch ProcessRequestCleanup()
Sprechen nennt es für Sie, aber haben Sie einen Blick auf das, was es nennt tatsächlich:
public virtual void Dispose()
{
IContainer service = null;
if (this.Site != null)
{
service = (IContainer) this.Site.GetService(typeof(IContainer));
if (service != null)
{
service.Remove(this);
EventHandler handler = this.Events[EventDisposed] as EventHandler;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
}
if (this._occasionalFields != null)
{
this._occasionalFields.Dispose();
}
}
Ohne eine Entwurfsoberfläche dieser Code im Wesentlichen tut nichts zur Laufzeit, was bedeutet, Ihre Disposed
Handler wird nie ausgeführt.
Lektion ist nicht auf Disposed
Handler angewiesen, um pro Anfrage auszuführen. Sie können es überschreiben, um sicherzustellen, dass etwas ausgeführt wird, aber Unloaded
ist eine viel sicherere Wette.
Thx Duncan, das ist der erste Beweis, den ich gesehen habe. –