2011-08-07 109 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