Actionscript中的简单事件链接。如何强制显示刷新?
我正在尝试采用先前并行运行多个远程对象调用的进程,并使它们以串行方式运行。
我知道这是一种hackish方法(bandaid!),但到目前为止我的方法是采用这个for循环来启动每个并行请求:
(原始代码)
for (i = 0; i < _processQ.length; i++){
fObj = _processQ.getItemAt(i);
f = fObj.Name;
fObj.Progress = "Processing...";
ro.process(gameid,f);
}
并将其更改为:
(新代码)
for (i = 0; i < _processQ.length; i++){
fObj = _processQ.getItemAt(i);
f = fObj.Name;
fObj.Progress = "Processing...";
ro.process(gameid,f);
//pause this loop until a result is returned from the request that was just made.
_pause_queue = true;
while(_pause_queue){
//do nothing
}
}
其中_pause_queue
是该类的私有全局布尔值。在fault-handler和response-handler函数中,它被设置回false,以便释放无限的where-loop并继续for循环。
这是有用的,但是UI仅在while循环结束后更新,这会导致负面的副作用,即在等待响应时应用程序挂起。
我可以在while循环中放置一些内容以允许flash更新显示吗?在VB(唉!)我会使用DoEvents
,但我不知道Actionscript的等价物。
或者,有没有办法添加一个简单的排队系统,而不是完全重写应用程序?这是遗留代码,我的截止日期很紧,所以我想尽可能少地修改它。 (否则我会从头开始重写它并使用Swiz来获取事件链。)
没有找到相关结果
已邀请:
3 个回复
淘圃跺枯替
然后在远程Object结果处理程序中:
嘘伪
桔马牛
对于优先级 - 您可以使用此: http://www.polygonal.de/legacy/as3ds/doc/de/polygonal/ds/PriorityQueue.html 也不应该花太多时间写一个,主要是将当前包含的内容包装到一个大事件调度程序中(只要您当前的处理器已经发送事件)。