我正在开发一个Matlab UI程序,按下按钮的回调可能需要很长时间才能处理。所以我基本上希望回调是异步执行的,并要求UI在准备就绪时更新回调结果。
有些documents建议使用Matlab计时器回调来完成此操作,但我发现回调仍未异步执行。
以下是一个简单的测试代码:
function [ ] = ThreadTest( )
t = timer('StartDelay',0.1, 'TimerFcn',@utilityFcn);
start(t);
for i=1:10000;
pause(0.1);
fprintf('x');
end
end
function utilityFcn(src,evt)
% some lengthy calculation/update done here
for i=1:100;
temp = rand(1000,1000)*rand(1000,1000);
end
fprintf('done');
end
我希望这个程序每0.1秒连续打印'x',并在回调结束时打印'done'。但是,在这个例子中,'x'仅在完成所有冗长的计算时打印(即,在打印'完成'之后始终打印)