vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Zombifenster richtig schließen 
Autor: Jabberwock_v6
Datum: 07.11.20 19:41

Hallo,

ich brauche mal wieder eure Hilfe, irgendwas habe ich wohl grundsätzlich noch nicht verstanden.
Aber ich mache das halt auch nicht täglich.

Ich habe eine Anwendung auf einen WinCE Handheld mit Barcodescanner usw.
Nach 10 Minuten ohne Eingabe wird der Benutzer ausgeloggt.
Dabei wird dann eine Login Form geladen und in den Vordergrund gebracht um den erneuten Login möglich zu machen.

Nach dem Login wird das Fenster geschlossen und es kann weiter gearbeitet werden.

Scheinbar wird dieses Loginfenster nicht ordentlich beendet und ist als Zombi immer noch aktiv.
Das habe ich auch überprüft und kann es reproduzieren, nach jedem Logout gibt es einen Zombi mehr.

So überprüfe ich ob das Fenster existiert und wenn nicht erzeuge ich es neu.
Die Überprüfung behauptet auch "False"

If frmLogin Is Nothing OrElse frmLogin.IsDisposed Then
                    frmLogin = New frm_Login
                End If
                If Not frmLogin.Visible Then
                    If frmLogin.ShowDlg() = True Then Application.Exit()
                    frmLogin.Close()
                    frmLogin.Dispose()
                    frmLogin = Nothing
                End If
Habe es auch mal so versucht aber keinen Unterschied.

 
Using frmLogin As New frm_Login
                    If frmLogin.ShowDlg() = True Then Application.Exit()
 
                End Using
Das eigentliche Problem, was dadurch entsteht ist das das BarcodeRead Event auf jedem aktivem Fenster ausgeführt wird. Das ist leider so und ich habe es mit einer Variablen die den Namen der aktiven Form prüft und das Event auf den nicht aktiven Fenstern abbricht. Nur hier ist es ja das aktive Fenster nur das es z.B. drei mal existier. Die Abarbeitung der Events scheint in der Reihenfolge der Erzeugung der Fenster zu passieren. Deshalb passiert es zuerst auf den schon beendeten (alten) Fenstern. Es soll dann etwas auf der Form geändert werden aber das scheitert mit einer "ObjectExposed" Meldung. Die kann ich zwar unterdrücken aber das löst ja das Problem nicht...

Warum werden die Fenster nicht ordentlich beendet?
Sie werden mit showDialog aufgerufen und auch beendet.

_exit gibt an ob jemand auf "btn_Beenden" gedrückt hat und sagt der aufrufenden Form das dass Programm beendet werden soll.

Public Function ShowDlg() As String
 
        Me.ShowDialog()
 
        ShowDlg = _exit
 
End Function
Weitern Code stelle ich gerne zur Verfügung
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zombifenster richtig schließen617Jabberwock_v607.11.20 19:41
Re: Zombifenster richtig schließen286effeff08.11.20 18:56
Re: Zombifenster richtig schließen271Jabberwock_v609.11.20 09:50
Re: Zombifenster richtig schließen271Jabberwock_v610.11.20 14:23
Re: Zombifenster richtig schließen261Kuno6011.11.20 01:53
Re: Zombifenster richtig schließen256Jabberwock_v611.11.20 09:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel