我已经在MATLAB中创建了两个计时器对象,TasksToExecute等于inf。我使用启动方法启动这两个计时器,并且一切正常。 我想在命令窗口中按ctrl + c(甚至在计时器启动之前在main.m脚本中)之后,删除可用的计时器对象:
问题:当我想删除计时器对象时,MATLAB崩溃!
另外,当我想在代码中执行“清除所有”命令时,MATLAB崩溃!
有人知道发生了什么吗?
设置:Windows 10,MATLAB 2017b
答案 0 :(得分:2)
我当前使用的解决方案是在停止和删除之间添加一个短暂的暂停。
这是一个补丁,我不确定它是否对您有用。
我的代码如下:
all_timers = timerfindall();
if (~isempty(all_timers))
stop(all_timers);
pause(0.1); % <--- Add a short pause between stop and delete
for i = 1:length(all_timers)
delete(all_timers(i));
end
end
上面的代码停止并删除所有计时器。
我要删除所有内容,因为在程序在删除计时器之前终止(例如调试)的情况下,“冗余”计时器对象仍未删除。
我不确定为什么暂停可以防止崩溃。
我想暂停可以允许“上下文切换”,并允许计时器回调函数在删除计时器之前完成执行。
答案 1 :(得分:0)
只需使用“以管理员身份运行”打开MATLAB软件,即可解决问题! 也许删除对象需要管理员权限!