|
|
|
Fehler beim Beenden der Anwendung Beim Beenden der Anwendung kommt es zu einer Schutzverletzung und der Task bleibt im Windows-Speicher weiterhin bestehen.
|
Kategorie: | Allgemein |
VB-Versionen: | VB5/6 |
Autor: | Dieter Otter |
Datum: | 09.08.07 |
Views: | 6754 |
|
|
|
  |
|
Problem:
Beim Beenden der Anwendung kommt es zu einer Schutzverletzung und der Task bleibt im Windows-Speicher weiterhin bestehen.
Ursache:
In aller Regel wird dieses Problem durch Verwenden der VB-Anweisung End verursacht. Die End-Anweisung beendet eine Anwendung ohne die noch geladenen Objekte und Formen korrekt
zu entladen. In vielen unseren Steuerelementen wird "Sub-Classing" eingesetzt, was zu einer Schutzvertzung führen kann, wenn die Komponente nicht "sauber" entladen wird.
Lösung:
Verwenden Sie anstelle der End-Anweisung eine kleine Prozedur, in der alle Formen korrekt entladen werden. Diese Prozedur sollte sich in einem Modul befinden:
' Anwendung sauber beenden
Publi Sub AppExit()
Static bWorking As Boolean
' Damit die Prozedur nicht mehrfach
' (rekursiv) aufgerufen werden kann
If bWorking Then Exit Sub
Dim oForm As Form
bWorking = True
' alle Formen durchlauden und entladen
For Each oForm In VB.Forms
Unload oForm
Next
bWorking = False
End Sub
Ersetzen Sie jetzt alle End-Anweisungen in Ihrem Projekt durch AppExit. Die Anwendung wird dann autom. beeendet, sobald alle Formen entladen wurden.
Es ist kein expliziter Aufruf von End mehr notwendig!
Zurück zur Übersichtsseite
|