Функция Matlab onCleanup не выполнена
Я столкнулся со следующей проблемой в MATLAB R2013a, которая по какой-то причине, которую я не понимаю, не вызывает функцию onCleanup, когда в функции определен таймер (включая TimerFcn).
Я добавляю два минимальных примера, показывающих проблему:
сначала рабочая версия, где процедура очистки вызывается, как и ожидалось:
function mytest(time)
t = timer();
myclean = onCleanup(@() disp('function ended'));
pause(time);
end
и теперь ошибочная версия, в которой очистка не вызывается (ни когда функция заканчивается нормально, ни когда нажаты ctrl + c)
function mytest2(time)
t = timer();
t.TimerFcn = @(o,s)disp(' ... waiting for some time');
myclean = onCleanup(@() disp('function ends'));
pause(time);
end
Я не смог найти никаких намеков в документации, почему таймер или, более конкретно, определение TimerFcn изменило бы выполнение кода очистки?