更新等酒吧而功能在后台运行
这个例子展示了如何使用afterEach
更新等酒吧与功能在后台运行的进程。
创建一个酒吧等,w
。
w = waitbar (0,“请等待…”);
为你设定的迭代次数为
循环,N
。存储当前迭代完成的数量,0
迭代的总数,N
,在用户数据
财产等的酒吧。
N =20.;w。用户数据= [0 N];
运行一个为
循环与N
迭代。在每个迭代中,使用parfeval
和backgroundPool
运行暂停
在后台为一个随机的秒数。存储每个未来
对象数组中。
为i = 1: N延迟=兰德;f (i) = parfeval (backgroundPool @pause 0,延迟);结束
使用辅助函数updateWaitbar
更新waitbar之后未来
完成。
afterEach (f, @ (~) updateWaitbar (w), 0);
使用删除
关闭等待毕竟酒吧未来
对象完成。
毕竟(f, @(~)删除(w), 0);
定义辅助函数
定义的helper函数updateWaitbar
。函数增量的第一个元素用户数据
属性,然后使用向量计算的进展。
函数updateWaitbar (w)%更新waitbar使用用户数据的属性。%检查如果waitbar删除对象的引用如果isvalid (w)%增量迭代完成的数量w.UserData (1) = w.UserData (1) + 1;%计算的进展进步= w.UserData (1) / w.UserData (2);%更新waitbarwaitbar(进步,w);结束结束