import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
btCreate={cls="button";text="创建处理线程";left=123;top=164;right=245;bottom=212;z=3};
btFinish={cls="button";text="结束处理线程";left=412;top=165;right=534;bottom=213;z=2};
btSendMsg={cls="button";text="发送任务";left=270;top=165;right=392;bottom=213;z=1}
)
/*}}*/
//线程通道
import console;
import thread.channel;
//创建通道
var chan1 = thread.channel(1);
var chan2 = thread.channel(1);
var hwdThread = 0;
winform.btCreate.oncommand = function(id, event) {
//创建工作线程
if (hwdThread != 0) {
console.log('工作线程已经创建');
return;
}
hwdThread = thread.create(
function(chan1, chan2) {
import console;
console.log('工作线程创建啦');
while (true) {
str <<= chan1
if (str == 'exit') {
chan2 <<= 'exit';
console.log('工作线程结束')
break;
}
str = 'hello' + str;
sleep(100)
chan2 <<= str;
}
}, chan1, chan2
)
}
winform.btSendMsg.oncommand = function(id, event) {
if (!chan1.empty() || !chan2.empty()) {
console.log('已有数据在待处理中');
return;
}
for (i = 1; 100; 1) {
chan1 <<= '你好'++i
v <<= chan2;
if (v == 'exit') break;
console.log(v);
}
}
winform.btFinish.oncommand = function(id, event) {
if (hwdThread != 0) {
chan1 <<= 'exit';
raw.closehandle(hwdThread);
hwdThread = 0;
if (!chan2.empty()) {
v <<= chan2;
}
}
}
winform.show();
win.loopMessage();