我在MATLAB中创建了两个计时器对象,TasksToExecute等于inf。我用启动方法启动这两个计时器,一切正常。我想在命令窗口中按 ctrl+c 后删除可用的计时器对象(甚至在计时器启动前在 main.m 脚本中(:
- 停止(计时器查找( --->这很好用
- delete(timerfind( ---> MATLAB 崩溃
问题:当我想删除计时器对象时,MATLAB 崩溃了!
另外,当我想在我的代码中执行"清除所有"命令时,MATLAB 崩溃了!
有谁知道发生了什么?
设置:Windows 10,MATLAB 2017b
我目前使用的解决方案是在停止和删除之间添加短暂的停顿。
这是一种补丁,我不确定它是否适合你。
我的代码如下所示:
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
上面的代码停止并删除所有计时器。
我正在删除所有内容,因为在程序在删除计时器之前终止(如调试(的情况下,"冗余"计时器对象将保持未删除状态。
我不确定为什么暂停会阻止崩溃。
我猜暂停允许"上下文切换",并让计时器回调函数在删除计时器之前完成执行。
刚刚用"以管理员身份运行"打开 MATLAB 软件,问题就解决了!也许,对象删除需要管理员权限!