aardio 文档

aardio 范例:事件定时器

//事件定时器

import win.ui;
/*DSG{{*/
var winform = win.form(text="使用thread.event创建定时执行任务的线程";right=349;bottom=211;parent=...)
winform.add(
btnStart={cls="button";text="启动定时线程";left=61;top=113;right=181;bottom=155;z=1};
btnStop={cls="button";text="结束定时线程";left=192;top=113;right=312;bottom=155;disabled=1;z=4};
lbTip={cls="static";left=26;top=85;right=100;bottom=103;transparent=1;z=3};
static={cls="static";left=138;top=13;right=309;bottom=44;align="center";center=1;edge=1;z=5};
trackbar={cls="trackbar";left=15;top=52;right=319;bottom=82;max=1000;min=500;z=2}
)
/*}}*/

task_t = function(hwnd,ms){
    import win;
    import thread.event;
    import console;

    var evt = thread.event("定时事件 GUID:32DA0FC7-A96D-4850-9A28-DA1DD4464B44")
    while( ! evt.wait(ms) ){ 
        win.setText(hwnd,tostring( time() ) )
    }
    console.log("任务已完成")
}

import thread.event;
var evtTask = thread.event("定时事件 GUID:32DA0FC7-A96D-4850-9A28-DA1DD4464B44",false)

winform.btnStart.oncommand = function(id,event){

    winform.btnStart.disabled = true;
    winform.btnStop.disabled = false;
    winform.trackbar.disabled = true;

    hThread = thread.create(task_t,winform.static.hwnd,winform.trackbar.pos);
    thread.waitOne(hThread)

    winform.btnStart.disabled = false;
    winform.btnStop.disabled = true;
    winform.trackbar.disabled = false;
}

winform.btnStop.oncommand = function(id,event){
    evtTask.set();//使事件对象切换为有信号状态,使wait函数退出
}

winform.trackbar.oncommand = function(id,event,pos){
    winform.lbTip.text = owner.pos + "毫秒"
}

winform.show() 
win.loopMessage();

Markdown 格式