对于两种情况来说似乎是错误的,
我为套接字
声明了一个计时器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也会自行挂起,这让我想知道是否有人遇到同样的问题?
答案 0 :(得分:0)
NativeProcess
可能暂停,等待您从StandardOutput或StandardError流中读取(特别是如果NativeProcess是命令行应用程序)。这可能是您看到的NativeProcess“悬挂”。
您应该从StandardOutput / StandardError流中读取以清空缓冲区,即使您实际上没有对数据执行任何操作。
查看文档,了解他们如何处理ProgressEvent.STANDARD_OUTPUT_DATA
和ProgressEvent.STANDARD_ERROR_DATA
事件(以及错误处理程序):
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/desktop/NativeProcess.html#includeExamplesSummary
否则,您是否能够提供有关NativeProcess
正在做什么的更多信息?