aardio 文档

aardio 范例: lib/service.threads.aardio


namespace service.threads;

//服务主线程
main = function(serviceName){
    //要在线程函数内部导入线程需要的库
    import service;
    import thread.event; 
    import fsys.log; 

    //向桌面发送对话框
    //service.msgbox("服务已启动"); 

    var evt = thread.event( _event_tag ++ serviceName,false);
    while( ! evt.wait(1000) ){  //每1000毫秒执行一次
        fsys.log.print(..time.tick()+' 服务主线程\r\n'); 
    } 
}

//注意这也是一个独立的线程,用户控制服务停止或启动时都会触发此函数
control = function(control,eventType,pEventData){ 
    //要在线程函数内部导入线程需要的库
    import service;
    import thread.event;

    var evtTask = thread.event( _event_tag ++ owner.serviceName,false); 

    if( control == 0x1/*_SERVICE_CONTROL_STOP*/ ){  
        //控制线程中更新 srvStatus,第一个参数只要指定需要更新的字段就行了
        service.updateStatus({currentState = 3/*_SERVICE_STOP_PENDING*/},owner.serviceName);
        evtTask.set();//使事件对象切换为有信号状态,使 wait 函数退出  
    }

    return 0/*_NOERROR*/
}

_event_tag = "NT.SERVICE.CONTROL.";
Markdown 格式