Обувь и тяжелые операции в отдельном потоке
Есть ли способ запустить тяжелую операцию в ботинках в другом потоке, чтобы графический интерфейс не зависал до завершения операции? (что-то похожее на загрузку, но более общее, как SwingWorker.class в Swing).
Я пробовал следующее:
Thread.start { <heavy operation block is here> }
но это не помогло Похоже, что обувь основная нить все еще влияет.
Заранее большое спасибо!
1 ответ
Не видя ваш код, я не могу дать вам никаких конкретных указаний. Но этот код, например, прекрасно работает для меня. Обратите внимание, что если утомительные вычисления завершаются, когда диалоговое окно открыто, вы не увидите результаты в течение нескольких секунд после закрытия диалогового окна; Обувь не изменит окно AI, пока диалог открыт. Попробуйте и посмотрите, как он себя ведет, и мы пойдем оттуда.
Shoes.app do
@window_slot = stack do
button('Tell me about ponies') do
@window_slot.append { para 'OMG PONIES!' }
end
button('I like dialogs') { alert 'I like dialogs, too!' }
button('Does this button make things slow?') do
Thread.new do
@window_slot.append { para 'Why did you click that? Are you crazy?!' }
#Let's do a bunch of calculations!
arr = []
sum = 0
0.upto(10000) do |i|
0.upto(1000) do |j|
sum += j
end
arr << sum
end
@window_slot.append { para arr.join(' ') }
end
end
end
end