# aardio 范例: lib/service.threads.aardio

```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.";
```