2017-06-12 9 views
1

私は、私たちのadobe airアプリケーションから.net .exeファイルを実行しています。 .exeファイルにはさまざまなパラメータがあります。だから私は新しいパラメータを送信する必要があるとき、私はプロセスを停止し、新しいパラメータで再開します。adobe airデスクトップアプリケーションでNativeProcessを再起動するにはどうすればよいですか?

public static var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
public static var process:NativeProcess = new NativeProcess(); 

をそれから私が求めているのクリックイベントに:私は静的変数としてNativeProcessオブジェクトを初期化してきた私はNativeProcessの終了()メソッドを使用していますが、私は再びexeファイルを起動したとき、それは私に

Error: Error #3213: Cannot perform operation on a NativeProcess that is already running. at Error$/throwError() at flash.desktop::NativeProcess/start()

を与えます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); 

これはコードを完全に正確に実行します。別のクリックイベントに私は

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オブジェクトのエラーが既に実行中得ます。私が間違ったことを助けてくれる人がいますか?

答えて

2

終了直後にプロセスを再起動すると、終了に少し時間がかかり、プロセスがまだ終了していない可能性があります。

プロセスが実際に終了してからプロセスを再起動しているときに送出されるexitイベントをリッスンするようにしてください:プロセスがそれのように終わることを保証するものではありません)あなたは、出口(呼び出すとき

process.addEventListener(NativeProcessExitEvent.EXIT, onProcessExit); 

private function onProcessExit(e:NativeProcessExitEvent):void 
{ 
    // restart your process from here 
} 

フラッシュスコープの外で起こっている。最後の手段として、プロセスを強制的に終了させることができます。

process.exit(true); 
関連する問題