Função Matlab onCleanup não executada
Encontrei o seguinte problema no MATLAB R2013a, que por algum motivo não entendo não chama a função onCleanup quando em uma função um temporizador (incluindo um TimerFcn) está definido.
Eu adiciono dois exemplos mínimos mostrando o problema:
primeiro a versão de trabalho em que a rotina de limpeza é chamada conforme o esperado:
function mytest(time)
t = timer();
myclean = onCleanup(@() disp('function ended'));
pause(time);
end
e agora a versão de buggy na qual a limpeza não é chamada (nem quando a função termina normalmente ou quando ctrl + c é pressionado)
function mytest2(time)
t = timer();
t.TimerFcn = @(o,s)disp(' ... waiting for some time');
myclean = onCleanup(@() disp('function ends'));
pause(time);
end
Não pude encontrar nenhuma dica na documentação de por que o timer ou mais específica a definição do TimerFcn alteraria a execução do código de limpeza?