Flex SockMonitor缓慢初始化

时间:2011-08-07 04:08:29

标签: actionscript-3 flex4

对于两种情况来说似乎是错误的,

我为套接字

声明了一个计时器
private var socketTimer:Timer = new Timer(500,1);

代码1: 此代码在执行NativeProcess

之前花了几秒钟
public function onTimerComplete(event:TimerEvent):void {
    socketMonitor = new SocketMonitor('127.0.0.1',8090);
    socketMonitor.addEventListener(StatusEvent.STATUS, socketStatusChange);
    socketMonitor.start();
}

private function socketStatusChange(e:StatusEvent):void {
    if(socketMonitor.available==false && xSo_start==false) {
        xSo_start=true;
        xSoDump();      //Execute NativeProcess EXE
    }
}

代码2(优化): 此代码将立即执行NativeProcess,但在几分钟后,NativeProcess将自行挂起而不会出现任何错误:

public function onTimerComplete(event:TimerEvent):void {
    socketMonitor = new SocketMonitor('127.0.0.1',8090);
    socketMonitor.addEventListener(StatusEvent.STATUS, socketStatusChange);
    socketMonitor.start();
    xSoDump();
}
private function socketStatusChange(e:StatusEvent):void {
}

在某些情况下,NativeProcess也会自行挂起,这让我想知道是否有人遇到同样的问题?

1 个答案:

答案 0 :(得分:0)

NativeProcess可能暂停,等待您从StandardOutput或StandardError流中读取(特别是如果NativeProcess是命令行应用程序)。这可能是您看到的NativeProcess“悬挂”。

您应该从StandardOutput / StandardError流中读取以清空缓冲区,即使您实际上没有对数据执行任何操作。

查看文档,了解他们如何处理ProgressEvent.STANDARD_OUTPUT_DATAProgressEvent.STANDARD_ERROR_DATA事件(以及错误处理程序):
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/desktop/NativeProcess.html#includeExamplesSummary

否则,您是否能够提供有关NativeProcess正在做什么的更多信息?