2011-08-07 61 views
0

这似乎是2分的情况下马车,的Flex SockMonitor慢初始化

我宣布一个定时器插座

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将自行挂起w ithout任何错误:

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挂得太大,这使我不知道是否有人遇到同样的issse?

回答

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正在做的更多信息?

+0

您好,本机进程将被处理大量的输入数据的从应用程序建立与JAVA,本机进程不会被读取,而不是应用程序将使用127.0.0.1端口将消息传递给的XMLSocket 8090 要更清楚的是,xSoDump()用于执行NativeProcess,我怀疑SocketMonitor在捕获任何数据失败时会自动关闭限制超时。 – thunder31