客户端线程用法
使用说明 2020-04-23 add by: liang
新版客户端支持多线程,每次ui:run都是新的线程
注意:ui:run和ui:threadChangeValue为非阻塞方法
function set_time()
ui:set('id_time', cutil:getSys14Time());
end
function run_test()
print('run_test start')
for i=0,5 do
if ui:allThreadStop() then
return;--页面是否关闭, 页面关闭了所以要退出线程
end
cutil:sleep(1000);
--子线程中调用函数在主线程运行,主要是操作UI
--注意:ui:threadChangeValue为非阻塞方法
ui:threadChangeValue('set_time()');
end
print('run_test end')
end
function run_test_finish()
print('run_test_finish end')
end
print('ui:run start')
--基本用法
ui:run("run_test()", "run_test_finish()");
--完整参数用法
--第三个参数为手工指定线程编码,默认为空自动创建一个线程并返回线程编码
--第三个参数为空,系统创建新的线程并返回一个唯一的线程编码
--第三个参数如果不为空
--系统会根据线程编码判断该线程是否在运行中,如果运行中放弃创建线程并返回空字符串
--如果没有运行则创建线程,返回值等于第三个参数
local sThreadCode = ui:run("run_test()", "run_test_finish()", 'thread_code');
print('ui:run end')
--执行顺序 {}为主线程中执行,[]为子线程中执行
--{ui:run start} -> {ui:run end} -> [run_test start] -> [run_test end] -> {run_test_finish end}
function run_init(sType)
print('run_init start '..sType)
cutil:sleep(2000);
print('run_init end '..sType)
end
function run_finish(sType)
print("run_finish "..sType);
end
local sPthreadID1 = ui:run("run_init('init')", "run_finish('init')");
local sPthreadID2 = ui:run("run_init('query')", "run_finish('query')");
local sPthreadID3 = ui:run("run_init('set')", "run_finish('set')");
if ui:isThreadRunning(sPthreadID3) then
print('线程'..sPthreadID3..'运行中')
end
if ui:isThreadRunning() then--如果参数为空,返回当前页面是否有线程在运行中
print('当前页面有线程在运行中')
end