Matlab onCleanup-Funktion nicht ausgeführt

Ich bin in MATLAB R2013a auf das folgende Problem gestoßen, das aus irgendeinem Grund, den ich nicht verstehe, die Funktion onCleanup nicht aufruft, wenn in einer Funktion ein Timer (einschließlich eines TimerFcn) definiert ist.

Ich füge zwei minimale Beispiele hinzu, die das Problem zeigen:

Zuerst die Arbeitsversion, in der die Bereinigungsroutine wie erwartet aufgerufen wird:

function mytest(time)
  t = timer();
  myclean = onCleanup(@() disp('function ended'));
  pause(time);
end

und jetzt die fehlerhafte Version, in der die Bereinigung nicht aufgerufen wird (weder wenn die Funktion normal endet noch wenn Strg + C gedrückt wird)

function mytest2(time)
  t = timer();
  t.TimerFcn = @(o,s)disp(' ... waiting for some time'); 
  myclean = onCleanup(@() disp('function ends'));
  pause(time);
end

Ich konnte in der Dokumentation keine Hinweise finden, warum der Timer oder eine spezifischere Definition des TimerFcn die Ausführung des Bereinigungscodes verändern würde.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage