我有一个函数func1
,它调用另一个函数func2
,然后启动timer object。我需要func1
暂停,直到计时器停止。我怎么能这样做?
定时器不是SingleShot定时器,但定时器定时器在其TimerFcn中测试的条件下使用stop()
停止。
答案 0 :(得分:3)
使用wait()
暂停执行,直到计时器停止:
function func1
thandle = func2;
wait(thandle)
disp(1)
end
function h = func2
h = timer('StartFcn',@(ev,obj)fprintf('Started timer'),'TimerFcn',@(ev,obj)pause(2));
start(h)
end
请注意func2()
是func1()
的子函数,但也可以是外部函数,唯一的要求是它返回timer
对象的句柄。
只需在命令窗口中调用foo
即可尝试该示例。
答案 1 :(得分:2)
您可以将计时器对象返回到func1并在那里实现等待循环:
while strcmp(to.Running, 'on')
% Do Nothing
end