Hey Dirk,
sorry, der Code ist in sich völlig inkonsistent. Weisst Du eigentlich, was Du das programmierst?
Diese Zeile setzt Deinen Dialog "visible" - und zwar im Vordergrund, ohne dass der Programmcode gestoppt wird. Die weiteren Zeilen laufen nun also "normal" weiter.
Es folgt eine "unendliche Schleife" ohne Ende-bedingung.
Da Du der Variablen "beenden" nie einen anderen Wert zuweist, wird dieser Codeblock nie verlassen - Klassischer Programmierfehler.
Dein Makro für den Schalter nutzt die Methode .endexecute(), die nur dann Sinn macht, wenn Du den Dialog mit .execute() ausgeführt hast. Hast Du aber nicht.
Dass Du das Objekt des Dialoges dann mit ".dispose()" auch noch endgültig zerstörst, macht den Code weder besser noch konsitenter. Deine Endlosschleife läuft immer noch - und ist nicht mehr stoppbar. Dass dies zum Programm-Absturz führt, ist eigentlich logisch.
Fang mit den Grundlagen der API Programmierung an - und arbeite Dich dann vor. Das Einfache Kopieren von Code ohne HIntergrundwisssen ist immer sehr gefährlich.
VG
Tom