aardio 文档
aardio 范例: 线程命令
//线程命令
import win.ui;
/*DSG{{*/
var winform = win.form(text="线程命令";right=599;bottom=399)
winform.add(
edit={cls="edit";left=12;top=11;right=588;bottom=389;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=1}
)
/*}}*/
import thread.command;
var listener = thread.command();
listener.print = function( ... ){
winform.edit.print( ... ) //将线程传过来的参数追加输出到文本框
}
listener.$print = function( ... ){
winform.edit.print( ... ) //将线程传过来的参数追加输出到文本框
}
//创建工作线程,线程内错误信息默认输出到控制台
thread.invoke(
function(hwnd){
//必须在线程函数内部导入需要的库
import thread.command;
//send同步模式调用界面线程的命令
thread.command.print("hello world",1,2,3);
//post异步模式调用界面线程的命令
thread.command.$print("异步 hello world",1,2,3);
//也可以用post方法异步调用线程命令,不会等待调用完成
thread.command.post("print","hello world",1,2,3);
},listener.hwnd
)
/*
下面这种方法实际上会转换为 thread.command.send调用,
所以无论该命令是否定义都可以调用,不会报错。
注意,不能使用下标获取命令调用函数
*/
listener.print(999,"也可以直接使用成员操作符调用命令")
//工作线程内这样写更方便,适合用于编写后台线程触发器之类的支持库
//listener作为线程参数转递时,将自动调用 thread.command.bind() 函数转换为线程命令调用对象
thread.invoke(
function( listener ){
listener.print("正在努力执行线程.....",99,88)
listener.$print("异步 正在努力执行线程",99,88)
},listener
)
winform.show();
win.loopMessage();
Markdown 格式