客户端线程用法


使用说明 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
Copyright © TouchNet 2015 all right reserved,powered by Gitbook最后修订时间: 2022-06-21 09:21:04

results matching ""

    No results matching ""