是否有类似于“ProcessMessages”的东西?也就是说,是否有一种调用方式可以告诉Flex在某个长循环中继续响应UI事件,以使UI不会变得不响应?
我知道Flex是按设计单线程运行的。这正是为什么我正在寻找像ProcessMessages()这样的东西 - 一种允许单线程可重入应用程序(如VB或基于单线程消息循环的C++应用程序)在长时间操作期间保持响应的函数。
答案摘要
- Flex中没有像
HandleEvents()
或ProcessMessages()
这样的内置函数。 - 使用某种回调机制来迭代处理长时间计算过程的块,同时在块之间让出运行时,从而使其响应,是保持响应式UI在长时间计算期间的唯一方法。
- 完成上述任务的方法有:
- 使用
enterFrame
事件,在Flex应用程序下面的Flash“movie”层刷新其帧时调用(类似于20fps)。 - 使用计时器。
- 使用
UIComponent.callLater()
,它会安排稍后执行的工作。 (文档说:Queues a function to be called later. Before each update of the screen, Flash Player or AIR calls the set of functions that are scheduled for the update.) - 使用有意触发的鼠标/键盘事件创建伪“工作线程”,就像this example(此示例)中所示。
- 使用
如果有进一步建议或我遗漏了什么,请随时编辑这个(现在的)Wiki部分。