How to delete persistent variables in a timer fcn
1 次查看(过去 30 天)
显示 更早的评论
Hi all,
I am using 3 persistent variables in a timer callback function. If I close the GUI (CloseRequestFcn) I want to delete the variable so that it is reinitialized if I start the programm again.
Actually I tried
clear timer_callback_fcn;
But that doesn't work. Moreover I tried
clear functions
This is working well but it doesn't seem to be the best way. Any ideas to improve?
Thank you!
2 个评论
采纳的回答
Jan
2013-9-23
Is timer_callback_fcn an M-file, a subfunction or a nested function? You can clear M-files only.
Instead of persistent variables, storing the data in the timer's UserData looks smarter. Then starting teh timer/GUI again, the data are reset automatically.
更多回答(1 个)
Robert Cumming
2013-9-23
if you want to keep your current methodology you need to add a "clear" option to your timer callback function which gets called when the gui closes.
i.e.
function myTimerCallback ( varargin )
persistent myTime
if isempty ( myTime ); myTime = now(); end % initialise
% reset the timer when the function is called with
% myTimerCallback ( 'clear' )
if nargin == 1 && ischar ( varargin{1} )
if strcmp ( varargin{1}, 'clear' )
myTime = [] % or however you want to reset.
return
end
end
% your code goes here
end
The use of persistent variables to store GUI data becomes even more complex if you have more than 1 GUI active at a time..... It is possible, but not easy.
As Jan said it might be easier to store the information in the timer function itself (depends on how you use the callback).
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Environment and Settings 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!