
namespace service.threads;

//服务主线程
main = function(serviceName){
	import service;
	import thread.event; 
	import fsys.log;
	import console;
	
	service.msgbox("服务已启动");
	console.open();
	
	var evt = thread.event("NT.SERVICE.CONTROL." + serviceName,false);
	while( ! evt.wait(1000) ){  //每1000毫秒执行一次
		fsys.log.print(..time.tick()+' 服务主线程\r\n');
		console.log(..time.tick()+' 服务主线程\r\n');
	} 
}

//注意这也是一个独立的线程，用户控制服务停止或启动时都会触发此函数
control = function(control,eventType,pEventData){ 
    import service;
    import thread.event;
    
    var evtTask = thread.event("NT.SERVICE.CONTROL." + owner.serviceName,false); 
    
    if( control == 0x1/*_SERVICE_CONTROL_STOP*/ ){  
        //控制线程中更新srvStatus，第一个参数只要指定需要更新的字段就行了
        service.updateStatus({currentState = 0x3/*_SERVICE_STOP_PENDING*/},owner.serviceName);
        evtTask.set();//使事件对象切换为有信号状态,使wait函数退出  
    }
     
    return 0x0/*_NOERROR*/
}
