Task:cancel( ) method
Stops Task execution, and set its status to "terminated"
.
Return value
This method returns true
, or false
if the Task was already terminated.
Example
local ui = require "ui"
local win = ui.Window("Task:cancel() sample", 320, 200)
local pb1 = ui.Progressbar(win)
local pb2 = ui.Progressbar(win)
pb1:center()
pb1.y = pb1.y - 20
pb2:center()
pb2.y = pb2.y + 20
pb1.themed = false
pb1.fgcolor = 0xEFB42C
pb2.themed = false
pb2.fgcolor = 0x000050
local btn = ui.Button(win, "Stop the Task")
btn:center()
btn.y = btn.y + 60
local function who_wins()
ui.info(pb1.position >= 100 and "Orange progress bar wins !" or "Blue progress bar wins !")
win:hide()
end
local task = async(function()
while pb1.position < 100 or pb2.position < 100 do
pb1:advance(math.random(1, 10))
pb2:advance(math.random(1, 10))
sleep(500)
end
who_wins()
end)
function btn:onClick()
task:cancel()
who_wins()
end
ui.run(win):wait()