0

我有一个func1调用另一个函数的函数func2,该函数又启动一个计时器对象。我需要func1暂停,直到计时器停止。我怎样才能做到这一点?

该计时器不是 SingleShot Timer,而是stop()在 TimerFcn 中测试的条件下停止使用的 Periodic Timer。

4

2 回答 2

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只需在命令窗口中调用即可尝试该示例。

于 2013-08-21T14:31:52.277 回答
2

您可以将计时器对象返回给 func1 并在那里实现一个等待循环:

while strcmp(to.Running, 'on')
    % Do Nothing
end
于 2013-08-21T14:23:49.167 回答