Kontakt
DSVGO
With ... End With
-Konstrukt ist ein schönes Hilfmittel, um mehrfach hintereinander auf dasselbe Objekt zuzugreifen (und die Programmausführung wird sogar schneller dadurch). Jedoch gibt es ein wenig bekanntes Problem damit. With obj
stößt wird der interne Referenzzähler des Objekts um eins erhöht. Nur wenn VB im weiteren Programmverlauf auf das zugehörige End With
stößt, wird dieser Referenzzähler wieder um eins verringert. Passiert dies nicht, so bleibt der Referenzzähler erhöht und das Objekt wird nie mehr freigegeben (zumindest nicht vor der Terminierung der Anwendung)! Auch ein Set obj = Nothing
kann dann nicht weiterhelfen! Sub Test() Dim db As Database On Error Goto ErrorHandler Set db = OpenDatabase(Connect) With db .TimeOut = 1000 '...mehr Code... .Close End With ErrorHandler: Set db = Nothing '...mehr Code... End SubWenn nun ein Fehler innerhalb des With-Blocks auftaucht (z.B. wegen eines Typkonflikts), wird das Objekt "db" trotz
Set db = Nothing
nie terminieren (solange das Programm läuft). © Jost Schwider, 30.04.2000-30.04.2000 - http://vb-tec.de/with.htm