计时器对象删除期间MATLAB崩溃

时间:2019-06-19 11:13:18

标签: matlab scheduling

我已经在MATLAB中创建了两个计时器对象,TasksToExecute等于inf。我使用启动方法启动这两个计时器,并且一切正常。 我想在命令窗口中按ctrl + c(甚至在计时器启动之前在main.m脚本中)之后,删除可用的计时器对象:

  1. stop(timerfind)--->效果很好
  2. delete(timerfind)---> MATLAB崩溃

问题:当我想删除计时器对象时,MATLAB崩溃!

另外,当我想在代码中执行“清除所有”命令时,MATLAB崩溃!

有人知道发生了什么吗?

设置:Windows 10,MATLAB 2017b

2 个答案:

答案 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软件,即可解决问题! 也许删除对象需要管理员权限!