2011-12-02 61 views
0

我有一个循环,可以解析和处理大量数据,并且需要很长时间。虽然它运行,屏幕是空白的,即时通讯想知道是否有方法来装载机或计数器?在flex中长循环加载进度

由于它的工作数量是有限的,我想我可能只是从内环路更新的进展,但进一步的读数显示,这是不可能的。

任何想法?由于

+0

是什么阻止它在循环内成为可能?一旦你解决了任何范围问题,你可以简单地调用一个函数来更新屏幕上的状态?我知道图形用户界面在更新时可能会很慢。如果您的代码属于这种情况,则可以考虑分块更新状态,例如每10次迭代只报告状态。你跑什么问题? – ToddBFisher

回答

0

让你的私有变量(该方法的范围),使一些定时器触发方法,你会得到一些伪线程,不会锁定您的UI。

7

第一步是将您的过程转换为快速完成的块,以保持应用程序的响应。

然后,启动一个尽可能快的计时器。在每个TIMER事件中,在某个阈值下完成尽可能多的块。这会降低整体流程,因此您希望阈值尽可能高。

你可以查看我的AsyncSWFModifier类的工作示例。这是我扩展的基类,覆盖了run方法。我不会在这里粘贴它,因为这个班有一些不相关的细节。

1

这些问题的答案是正确的,主要的问题在于Flash播放器是单线程的。