如何在Adobe AIR桌面应用程序中重新启动NativeProcess?
问题描述:
我正在运行我们的adobe air应用程序中的.net.exe文件。 .exe文件接收不同的参数。所以当我必须发送新的参数时,我会停止这个过程并重新开始新的参数。我使用的exit()的NativeProcess
方法,但是当我再次启动的EXE它给我如何在Adobe AIR桌面应用程序中重新启动NativeProcess?
Error: Error #3213: Cannot perform operation on a NativeProcess that is already running. at Error$/throwError() at flash.desktop::NativeProcess/start()
我已经初始化的NativeProcess静态变量:
public static var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
public static var process:NativeProcess = new NativeProcess();
然后在点击事件中,我已经叫exe文件
var file:File = File.desktopDirectory;
file = file.resolvePath("C:\\somepath.exe");
var ar:Vector.<String> = new Vector.<String>();
ar.push("0");
ar.push("C:\\temp\\APIData.xml");
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = ar;
process.start(nativeProcessStartupInfo);
这运行代码绝对好。在另一个click事件我打电话
process.exit()
,然后再次运行exe
var file:File = File.desktopDirectory;
file = file.resolvePath("C:\\somepath.exe");
var ar:Vector.<String> = new Vector.<String>();
ar.push("1");
ar.push("C:\\temp\\APIData.xml");
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments = ar;
process.start(nativeProcessStartupInfo);
但在这个其他点击事件,我得到的NativeProcess的错误已经在运行。有人能帮助我做错了什么吗?
答
如果您在退出后立即重新启动进程,则可能是退出时间稍长,并且进程尚未“退出”。
尝试监听时的过程确实结束时分派的退出事件,然后重新启动过程:
process.addEventListener(NativeProcessExitEvent.EXIT, onProcessExit);
private function onProcessExit(e:NativeProcessExitEvent):void
{
// restart your process from here
}
当你调用exit(),它不保证该过程将结束,因为它发生在闪光范围之外。作为最后一招,您可以尝试强制该过程退出:
process.exit(true);