我可以通过Worker关闭AIR应用程序吗?

时间:2018-08-14 13:18:30

标签: actionscript-3 air worker

我在AIR中制作了一个使用Worker对象的应用程序。现在,我需要通过它关闭我的应用程序,但是我不知道该怎么做...

这是我尝试过的:

  • NativeApplication.nativeApplication.exit();退出工作程序,而不是应用程序
  • System.exit(0);在AIR中不起作用,只有FP调试器
  • fscommand('quit');在AIR中不起作用,仅在FP中起作用
  • NativeApplication.nativeApplication.openedWindows[i].close();中,openedWindows.length返回“ 0”
  • 当'isPrimordial'为true并且当前Worker是后台Worker时,
  • 中的WorkerDomain.current.listWorkers[i].terminate(); for,terminate()不起作用。

如何通过后台工作程序退出我的应用程序?

示例代码:

package {

    import flash.desktop.NativeApplication;
    import flash.system.fscommand;
    import flash.system.System;
    import flash.system.Worker;
    import flash.system.WorkerDomain;

    public class Main extends Sprite {

        private var _worker:Worker;

        public function Main() {

            if(Worker.current.isPrimordial) {
                _worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes, true);
                _worker.start();
                trace("create worker");
            }
            else {
                trace("Worker started, lets close app!");
                //NativeApplication.nativeApplication.exit();
                //System.exit(0);
                //fscommand("quit");
                //NativeApplication.nativeApplication.openedWindows.length;
                //WorkerDomain.current.listWorkers[0].terminate();
            }

        }

    }

}

1 个答案:

答案 0 :(得分:1)

尽管我以前没有做过,但是也许这是实现此目的的好方法:

创建工作程序时,请监听TERMIANTED状态更改事件,该事件将在终止工作程序时分派(我不确定执行nativeapplication.exit是否会触发此事件,或者是否必须显式调用{ {1}}方法):

terminate()

然后,在该处理程序中,退出应用程序:

_worker = WorkerDomain.current.createWorker(this.loaderInfo.bytes, true);
_worker.addEventListener(WorkerState.TERMINATED, workerFinished, false, 0, true);
_worker.start();