<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/155982</link>
    <title>MATLAB Central Newsreader - Tempoarily Disable a GUI while a function is running</title>
    <description>Feed for thread: Tempoarily Disable a GUI while a function is running</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2008 by The MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>The MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Tue, 11 Sep 2007 21:35:10 -0400</pubDate>
      <title>Tempoarily Disable a GUI while a function is running</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/155982#391742</link>
      <author>Adam </author>
      <description>I have a complicated function that take awhile to run.  I&lt;br&gt;
have set up a GUI using GUIDE to handle different variables.&lt;br&gt;
&amp;nbsp;The problem I have is the user can click the run button, or&lt;br&gt;
a slider control multiple times.  This calls multiple&lt;br&gt;
instances of the function, with bizarre results.  In a&lt;br&gt;
couple cases enough functions are called to crash Matlab.&lt;br&gt;
&lt;br&gt;
I tried making the waitbar() modal.  However, you can still&lt;br&gt;
sneak in 2-3 button presses.  Even worse, if you click a&lt;br&gt;
slider control it locks and then proceeds to repeatedly push&lt;br&gt;
the slider button (calling a function instance every time)&lt;br&gt;
until it reaches the max limit!!!&lt;br&gt;
&lt;br&gt;
I'm pretty sure the following code will work:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(hObject, 'Enable', 'off')&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.lblWait, 'String', 'Thinking ...')&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pause(0.01)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fcnTestPlot(fVal, handles);   % &amp;lt;-- this is "long" fcn&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pause(0.01)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(handles.lblWait, 'String', '')&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(hObject, 'Enable', 'on')&lt;br&gt;
&lt;br&gt;
&amp;nbsp;It seems like a bit of a hack; i.e. is there a better way?&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 12 Sep 2007 04:37:16 -0400</pubDate>
      <title>Re: Tempoarily Disable a GUI while a function is running</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/155982#391783</link>
      <author>Steven Lord</author>
      <description>&lt;br&gt;
"Adam " &amp;lt;not.my.email@mathworks.com&amp;gt; wrote in message &lt;br&gt;
news:fc71me$ouq$1@fred.mathworks.com...&lt;br&gt;
&amp;gt;I have a complicated function that take awhile to run.  I&lt;br&gt;
&amp;gt; have set up a GUI using GUIDE to handle different variables.&lt;br&gt;
&amp;gt; The problem I have is the user can click the run button, or&lt;br&gt;
&amp;gt; a slider control multiple times.  This calls multiple&lt;br&gt;
&amp;gt; instances of the function, with bizarre results.  In a&lt;br&gt;
&amp;gt; couple cases enough functions are called to crash Matlab.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I tried making the waitbar() modal.  However, you can still&lt;br&gt;
&amp;gt; sneak in 2-3 button presses.  Even worse, if you click a&lt;br&gt;
&amp;gt; slider control it locks and then proceeds to repeatedly push&lt;br&gt;
&amp;gt; the slider button (calling a function instance every time)&lt;br&gt;
&amp;gt; until it reaches the max limit!!!&lt;br&gt;
&lt;br&gt;
*snip*&lt;br&gt;
&lt;br&gt;
Read this section from the documentation that discusses Callback &lt;br&gt;
Interruption:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_guis/bq61qtj-1.html"&gt;http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_guis/bq61qtj-1.html&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Note this is from the MATLAB 7.5 (R2007b) documentation, but I don't believe &lt;br&gt;
there was any change in this functionality from MATLAB 7.4 (R2007a) to 7.5.&lt;br&gt;
&lt;br&gt;
-- &lt;br&gt;
Steve Lord&lt;br&gt;
slord@mathworks.com &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 12 Sep 2007 08:09:55 -0400</pubDate>
      <title>Re: Tempoarily Disable a GUI while a function is running</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/155982#391798</link>
      <author>Yair Altman</author>
      <description>"Adam " &amp;lt;not.my.email@mathworks.com&amp;gt; wrote in message&lt;br&gt;
&amp;lt;fc71me$ouq$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I have a complicated function that take awhile to run.  I&lt;br&gt;
&amp;gt; have set up a GUI using GUIDE to handle different variables.&lt;br&gt;
&amp;gt;  The problem I have is the user can click the run button, or&lt;br&gt;
&amp;gt; a slider control multiple times.  This calls multiple&lt;br&gt;
&amp;gt; instances of the function, with bizarre results.  In a&lt;br&gt;
&amp;gt; couple cases enough functions are called to crash Matlab.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I tried making the waitbar() modal.  However, you can still&lt;br&gt;
&amp;gt; sneak in 2-3 button presses.  Even worse, if you click a&lt;br&gt;
&amp;gt; slider control it locks and then proceeds to repeatedly push&lt;br&gt;
&amp;gt; the slider button (calling a function instance every time)&lt;br&gt;
&amp;gt; until it reaches the max limit!!!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I'm pretty sure the following code will work:&lt;br&gt;
&amp;gt;     set(hObject, 'Enable', 'off')&lt;br&gt;
&amp;gt;     &lt;br&gt;
&amp;gt;     set(handles.lblWait, 'String', 'Thinking ...')&lt;br&gt;
&amp;gt;     pause(0.01)&lt;br&gt;
&amp;gt;     fcnTestPlot(fVal, handles);   % &amp;lt;-- this is "long" fcn&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     pause(0.01)&lt;br&gt;
&amp;gt;     set(handles.lblWait, 'String', '')&lt;br&gt;
&amp;gt;     set(hObject, 'Enable', 'on')&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;  It seems like a bit of a hack; i.e. is there a better way?&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
You might wish to use my "enable/disable figure" submission&lt;br&gt;
on the File Exchange:&lt;br&gt;
&lt;a href="http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=15895"&gt;http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=15895&lt;/a&gt;&lt;br&gt;
- it disables the entire figure, as well as all contained UI&lt;br&gt;
controls and menus, in a single command. After your callback&lt;br&gt;
function ends, you can call this function again to re-enable&lt;br&gt;
the figure.&lt;br&gt;
&lt;br&gt;
Yair Altman&lt;br&gt;
&lt;a href="http://ymasoftware.com"&gt;http://ymasoftware.com&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 12 Sep 2007 16:03:23 -0400</pubDate>
      <title>Re: Tempoarily Disable a GUI while a function is running</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/155982#391888</link>
      <author>Adam </author>
      <description>"Steven Lord" &amp;lt;slord@mathworks.com&amp;gt; wrote in message&lt;br&gt;
&amp;lt;fc7qds$6pt$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; "Adam " &amp;lt;not.my.email@mathworks.com&amp;gt; wrote in message &lt;br&gt;
&amp;gt; news:fc71me$ouq$1@fred.mathworks.com...&lt;br&gt;
&amp;gt; &amp;gt;I have a complicated function that take awhile to run.  I&lt;br&gt;
&amp;gt; &amp;gt; have set up a GUI using GUIDE to handle different variables.&lt;br&gt;
&amp;gt; &amp;gt; The problem I have is the user can click the run button, or&lt;br&gt;
&amp;gt; &amp;gt; a slider control multiple times.  This calls multiple&lt;br&gt;
&amp;gt; &amp;gt; instances of the function, with bizarre results.  In a&lt;br&gt;
&amp;gt; &amp;gt; couple cases enough functions are called to crash Matlab.&lt;br&gt;
&amp;gt; &amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; I tried making the waitbar() modal.  However, you can still&lt;br&gt;
&amp;gt; &amp;gt; sneak in 2-3 button presses.  Even worse, if you click a&lt;br&gt;
&amp;gt; &amp;gt; slider control it locks and then proceeds to repeatedly push&lt;br&gt;
&amp;gt; &amp;gt; the slider button (calling a function instance every time)&lt;br&gt;
&amp;gt; &amp;gt; until it reaches the max limit!!!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; *snip*&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Read this section from the documentation that discusses&lt;br&gt;
Callback &lt;br&gt;
&amp;gt; Interruption:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;&lt;br&gt;
&lt;a href="http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_guis/bq61qtj-1.html"&gt;http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/creating_guis/bq61qtj-1.html&lt;/a&gt;&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Note this is from the MATLAB 7.5 (R2007b) documentation,&lt;br&gt;
but I don't believe &lt;br&gt;
&amp;gt; there was any change in this functionality from MATLAB 7.4&lt;br&gt;
(R2007a) to 7.5.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; -- &lt;br&gt;
&amp;gt; Steve Lord&lt;br&gt;
&amp;gt; slord@mathworks.com &lt;br&gt;
&lt;br&gt;
so a dialog box doesn't automatically set Interruptible to&lt;br&gt;
'off' and BusyAction to 'cancel'.  However, setting these&lt;br&gt;
properties has no effect.  Please run this code, and click&lt;br&gt;
on the left, slider button.  &lt;br&gt;
&lt;br&gt;
What am I missing?&lt;br&gt;
&lt;br&gt;
Also, callback_interrupt.m didn't come with my matlab&lt;br&gt;
installation.&lt;br&gt;
&lt;br&gt;
% --- begin code -------------------------------------------&lt;br&gt;
function testCallback()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cellName = {'BusyAction', 'Interruptible'};&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cellValue = {   'cancel', 'off'};&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hFig = figure('Position', [100 100 320 240], ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cellName, cellValue);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hSld = uicontrol(hFig, 'Style', 'slider', ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Position', [10 10 300 20], ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'BackgroundColor', [0.9 0.9 0.9], ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Callback', @fcnRun, ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Value', 0.1, ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cellName, cellValue);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hTxt = uicontrol(hFig, 'Style', 'edit', ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Position', [100 100 120 20], ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'BackgroundColor', 'white', ...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cellName, cellValue);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function y = fcnRun(hObject, eventdata)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hBox = msgbox('Please Wait', 'WindowStyle', 'modal');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(hBox, cellName, cellValue);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y = zeros(1, 1e6);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% do something that takes time&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for idx = 1: length(y)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(idx) = sin(idx * 2 * pi / 100) + randn(1, 1);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set(hTxt, 'String', sum(y))&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;close(hBox)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&lt;br&gt;
end&lt;br&gt;
% --- end code --------------------------------&lt;br&gt;
&lt;br&gt;
Yair, thanks for the link, but I can't use functionality&lt;br&gt;
that is undocumented and unsupported.&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Thu, 13 Sep 2007 19:37:50 -0400</pubDate>
      <title>Re: Tempoarily Disable a GUI while a function is running</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/155982#392216</link>
      <author>per isakson</author>
      <description>"Adam " &amp;lt;not.my.email@mathworks.com&amp;gt; wrote in message &lt;br&gt;
&amp;lt;fc71me$ouq$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I have a complicated function that take awhile to run.  I&lt;br&gt;
&amp;gt; have set up a GUI using GUIDE to handle different &lt;br&gt;
variables.&lt;br&gt;
&amp;gt;  The problem I have is the user can click the run button, &lt;br&gt;
or&lt;br&gt;
&amp;gt; a slider control multiple times.  This calls multiple&lt;br&gt;
&amp;gt; instances of the function, with bizarre results.  In a&lt;br&gt;
&amp;gt; couple cases enough functions are called to crash Matlab.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I tried making the waitbar() modal.  However, you can &lt;br&gt;
still&lt;br&gt;
&amp;gt; sneak in 2-3 button presses.  Even worse, if you click a&lt;br&gt;
&amp;gt; slider control it locks and then proceeds to repeatedly &lt;br&gt;
push&lt;br&gt;
&amp;gt; the slider button (calling a function instance every time)&lt;br&gt;
&amp;gt; until it reaches the max limit!!!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I'm pretty sure the following code will work:&lt;br&gt;
&amp;gt;     set(hObject, 'Enable', 'off')&lt;br&gt;
&amp;gt;     &lt;br&gt;
&amp;gt;     set(handles.lblWait, 'String', 'Thinking ...')&lt;br&gt;
&amp;gt;     pause(0.01)&lt;br&gt;
&amp;gt;     fcnTestPlot(fVal, handles);   % &amp;lt;-- this is "long" fcn&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;     pause(0.01)&lt;br&gt;
&amp;gt;     set(handles.lblWait, 'String', '')&lt;br&gt;
&amp;gt;     set(hObject, 'Enable', 'on')&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;  It seems like a bit of a hack; i.e. is there a better &lt;br&gt;
way?&lt;br&gt;
&lt;br&gt;
Yes, this is bizarre. I don't understand what is going on, &lt;br&gt;
but I don't think fcnRun is called multiple times. &lt;br&gt;
&lt;br&gt;
I tried this variant, which I think works&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;function y = fcnRun( hObject, eventdata ) %#ok&amp;lt;INUSD&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ii  = ii + 1;  % ii=1; in the outer function&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf( '%i', ii )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set( hSld, 'Enable', 'off' )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set( hFig, 'Pointer', 'watch' )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawnow&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y = zeros(1, 1e6);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;% do something that takes time&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for idx = 1: length(y)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(idx) = sin(idx * 2 * pi / 100) + randn(1, 1);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set( hTxt, 'String', sum(y) )&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set( hSld, 'Enable', 'on' )&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set( hFig, 'Pointer', 'arrow' )&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&lt;br&gt;
</description>
    </item>
  </channel>
</rss>
