Hallo allesamt,
schon länger beschäftige ich mich gedanklich mit einer Problematik, habe jedoch keine zufriedenstellende Idee. Bitte um konstruktive Anteilnahme ;-).
Problematik:
Ich habe ein Programm zur Prozesssteuerung geschrieben, welches mit zahlreichen Hotkeys bedient wird. Gerne hätte ich eine Möglichkeit, um zur beliebigen Zeit mit ESC die momentane Verarbeitung abzubrechen.
In Schleifen, die schnelle Durchlaufszeiten haben, lässt sich natürlich in Realtime auch ein Flag (boolean) überprüfen. Sind es aber längere Verabeitungsabläufe, die wiederum viele Unterprogramme ausführen, die länger dauern können, wäre die Lösung überall eine Überprüfung des Flags zu setzen einfach lästig und 'deprecated'.
Lösungsansatz:
Wenn das Programm schon mit Hotkeys gesteuert wird, hat man den Vorteil, dass ein Drücken auf die festgelegte Abbruch-Taste einen Interrupt auslöst, welcher den aktuellen Prozesslauf unterbricht. Wenn nun schon eine Unterbrechung erfolgt ist, liegt die Idee nahe, den Programmstack zu manipulieren. Wenn nach Ablauf des Interrupts, der alle Abbruchbedingungen erfüllen kann, dann statt dem Rücksprung, das Programm in die Ausgangslage gebracht wird (z.B. Warte-Modus), hätte man schon gewonnen.
Bin dankbar für jeden post