Hallo zusammen,
ich habe folgendes Problem:
ich habe ein Objekt mit einer Methode "simulate", die in einer for-Schleife eine Simulink-Simulation aufruft. die Rückgabe der Methode ist ein Flag, ob abgebrochen wurde/es einen Fehler gab, oder nicht. Ursprünglich gab es die Möglichkeit, via cancel-Button der "multiWaitbar" aus dem FEX die Funktion zu beenden (Es wurde das flag auf false gesetzt, und dadurch die Schleife beendet).
So weit kein Problem. Aber jetzt kommt folgendes:
Ich möchte einen anderen Cancel-Button nutzen, der von einer (externen) GUI aus die Funktion beendet. Deshalb habe ich statt der (lokalen) flag-Variable eine Property Variable erstellt.
Vereinfacht gesagt:
classdef Objekt < handle
properties
% ( ...)
flag;
end
methods
% (...)
function flg = simulate(obj)
obj.flag = true % muss ja true sein, damit die schleife läuft
% (bla bla)
for i=1:ende
if ~obj.flag
break;
end % if
% (usw usf)
end % for
end % simulate
end % methods
end % classdef
Aufruf der funktion (innerhalb eines GUI-Objekts; s ist das Objekt
function startButton_callback(~, ~, obj)
f = obj.s.simulate();
end % startButton_callback
function abortButton_callback(~, ~, obj)
obj.s.flag = false;
end % abortButton_callback
Wenn ich nun während der for-loop läuft den Abort-Button anklicke, wird der loop leider nicht beendet. (obwohl nachweislich das flag =false gesetzt ist) ...
Vielen Dank für eure Hilfe!
Jan
↧