我正在 FDT6 中开发一个 AS3 项目。我正在使用最新的 FLEX 4.6 和 AIR 3.7。
我有一个嵌入到主应用程序中的 worker.swf 文件来进行线程处理。
我正在使用 MessageChannel 类在两者之间传递信息。
在我的主要课程中,我定义了
private var mainToWorker:MessageChannel;
private var workerToMain:MessageChannel;
mainToWorker = Worker.current.createMessageChannel(worker);
workerToMain = worker.createMessageChannel(Worker.current);
在 mainToWorker 我只发送消息。在这些消息中,我发送一个字节数组的信息。该信息是一个包含“命令”属性和“道具”属性的对象。基本上就像一个函数调用。command 是一个函数名,props 是一个包含该函数数据的对象。
mainToWorkerMutex.lock();
mainToWorker.send(ByteArrayUtils.ObjectToByteArray({command:"DoSomething", props:{propA:1,propB:7}}));
mainToWorkerMutex.unlock();
workerToMain var 也是如此,除了我只发送包含 'message' 和 'props' 参数的字节数据。
workerToMainMutex.lock();
workerToMain.send(ByteArrayUtils.ObjectToByteArray({command:"complete", props:{return:"result"}}));
workerToMainMutex.unlock();
作为一个健全的检查,我确保消息渠道得到了他们应该得到的东西。
当我在 FDT 中构建它时它工作正常,但是当它通过 flash builder 使用 ANT 脚本构建时,我有时会在 workerToMain 通道中返回“命令”事件。
我正在通过消息通道发送大量数据。是否有可能我超载它并以某种方式导致缓冲区溢出到另一个消息通道?这怎么可能只发生在FB?
我已经检查了很多次我的代码,并且我确信我自己的代码中没有任何东西会发回该消息。