Using timer, How can I cleanly exit a function execution, when the timer fires in MATLAB?
19 次查看(过去 30 天)
显示 更早的评论
My problem is that I can't find a Function to callback as a 'TimerFcn', that cleanly exits my function without errors.
t = timer('StartDelay',2,'TimerFcn', );
Thanks in advance.
2 个评论
Guillaume
2019-12-13
Can you explain more clearly what you're trying to do exactly, particularly, the order of execution of the various things you want to happen.
采纳的回答
Walter Roberson
2019-12-13
编辑:Walter Roberson
2019-12-21
There are only four ways in MATLAB to force a function to stop executing without its cooperation:
- quit MATLAB
- force an out-of-memory error
- force an infinite recursion
- Use jave robot or similar to simulate pressing control-C in the command line (note: this might not terminate immediately
There is no way to send a signal to a particular function to force that one function to stop, and there is no way to send a signal to a particular function to force that one function to error().
Therefore what you should do is write your timer to set a flag in an area that the other code checks periodically.
4 个评论
Walter Roberson
2021-3-3
I just tried in R2020b, and found that MATLAB:pmaxsize (too much memory) and MATLAB:lang:StackOverflow (too many levels of recursion) can both be caught. However, it would be worth testing out what happens when the problem is triggered in a callback that is not really part of the code being executed.
更多回答(1 个)
Sean de Wolski
2019-12-13
Why use a timer for this?
In the start of your function, start a tic
t = tic
Then periodically check
if toc(t)>2
return
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!