Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------- layout.nut ---------------------------------
- class exampleLayout extends Layout {
- button1 = null;
- worker = null;
- constructor(layout_data){
- base.constructor(layout_data);
- button1 = findControlId("button1");
- button1.onclick = buttonClick;
- }
- function buttonClick(event){
- if (event.id=="button1"){
- if (event.type=="clicked"){
- worker = Worker("worker.nut", "workerClient", "worker_id");
- worker.setEventListener(onWorkerEvent);
- worker.start();
- worker.postMessage({ value = 1, name = "test"});
- }
- }
- }
- function onWorkerEvent(event){
- local workerid = event.id; /* "worker_id" */
- if (event.type=="finish"){
- ...
- }
- else if (event.type=="message"){
- local event_data = event.data;
- }
- }
- }
- ----------------------------------- worker.nut ---------------------------------
- class workerClient extends WorkerClient{
- constructor(id){
- ...
- }
- function onEvent(event){
- if (event.type=="start"){
- postMessage("Started");
- ...
- }
- else if (event.type=="message"){
- if (event.data.value==1){
- postMessage("Will Finish");
- finish();
- }
- }
- }
- }
- ----------------------------------- worker-new.nut ---------------------------------
- /* just execute this script */
- local output=System.exec("longprocess -v");
- do{
- /* true = wait for message, false = return false if there is no message avail in queue */
- local msg = getMessage();
- if (msg.value==1){
- postMessage("Will Finish");
- finish("return message");
- }
- }while(getStatus()=="active");
- /* when parent call worker.stop(); the getStatus() will return "inactive" */
- /* no finish() in end of script is ok, but it won't pass any return value */
Advertisement
Add Comment
Please, Sign In to add comment