So wie ich das sehe, wird die Schleife oben maximal 1/100 Sekunden warten, eventuelle Events abarbeiten, wieder warten und bei xbe_None beenden.
Diese Schleife selbst steuert weder den aktuellen Fokus, noch kann Sie die Ursache sein dass das Programm hängt.
Es ist aber keinesfalls gesichert, dass die Schleife nach einer gewissen Zeit tatsächlich beendet wird (im Gegensatz zu meiner Funktion mit ähnlichem Vorhaben).
Denn falls jemand dauernd die Maus bewegt, oder andere Sachen macht, bleibt er in dieser Schleife - ob das ein Problem ist kann ich nicht beurteilen.
Code: Alles auswählen
set console off // bei GUI extrem wichtig !
set alternate to ... / ON
...
? seconds(),"nEventLoop"
WHILE (nEvent := AppEvent(@mp1,@mp2,@oXbp,1)) <> xbe_None
? seconds(),nEvent,mp1,mp2
oXbp:HandleEvent(nEvent,mp1,mp2)
END
? seconds(),"Ende"
so könnte man dokumentieren was und wie lange in der Schleife geschieht.