Probleme mit eigenen Events

17/04/2009 - 09:10 von Holger Kreissl | Report spam
Hallo NG,

ich arbeite an einer Software die XML in ein eigenes Objektmodell làdt
und dann verarbeitet.

Nun habe ich versucht das Modell um einige Events zu erweitern, um z.B.
ein Event feuern zu können, wenn das Objektmodell vollstàndig
deserialisiert wurde, um interne Objektreferenzen zu erstellen oder
Daten aus der DB nachzuladen...

Delegate Sub OnDataLoadedHandler(ByVal sender..)
Protected Shared Event OnDataLoaded As OnDataLoadedHandler

Dazu gibt es nun ein statisches bzw. shared Event in der Basisklasse.
Jedes "Blatt" des objektbaums implementiert dieses Event:

Protected Sub OnDataLoaded(ByVal sender...) Handles MyBase.OnDataLoaded
'Load database
End Sub

Das ganze hat auch toll funktioniert, bis ich feststellen musste das
hier was nicht korrekt sein kann. Beim debuggen stellte ich fest, daß
das Event auch für Objekte getriggert wird, die es nicht mehr gibt! D.h.
statt 20-30 mal wurden die Events 400-1000 mal aufgerufen! Das heißt,
hier gibs ein konzeptionelles Problem, oder asp.net macht komische
Sachen :) (Wahrscheinlich ist wohl ersteres)

RaiseEvent OnDataLoaded(Me, New ProzessEventArgs(Me, context))

Bei einem erneuten Laden des Objektes und erneutem RaiseEvent werden die
Events des davor geladenen Objektes immernoch gefeuert, obwohl diese
nicht mehr existent sind (es gibt nur eine Session wo das aktuelle
Objekt gehalten wird).

Kann mir jemand erklàren, wie es zu diesem verhalten kommen kann? Selbst
ein null setzen oder GC.Collect bringt nichts. Es werden Events
getriggert, die es so garnicht gibt.

Eventuell kann mir jemand ein paar gute Links oder Literaturhinweise zu
diesem Thema geben. Wahrscheinlich fehlt mir noch etwas Verstàndnis zu
Events / Delagates im asp.Net. ;)


Danke und viele Grüße

Holger Kreissl
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
17/04/2009 - 10:53 | Warnen spam
Hallo Holger,

"Holger Kreissl" schrieb:

Protected Shared Event OnDataLoaded As OnDataLoadedHandler

Dazu gibt es nun ein statisches bzw. shared Event in der Basisklasse.



Warum ist das "Shared"? Lass das mal weg, evtl. sind deine Probleme dann
schon nicht mehr existent.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen