有没有办法在不同的线程中在鞋子中运行繁重的操作,以便 GUI 在操作完成之前不会冻结?(smth。类似于下载但更通用,如 Swing 中的 SwingWorker.class)。
我尝试了以下方法:
Thread.start { <heavy operation block is here> }
但这没有帮助。看起来鞋子主线程仍然受到影响。
提前非常感谢!
有没有办法在不同的线程中在鞋子中运行繁重的操作,以便 GUI 在操作完成之前不会冻结?(smth。类似于下载但更通用,如 Swing 中的 SwingWorker.class)。
我尝试了以下方法:
Thread.start { <heavy operation block is here> }
但这没有帮助。看起来鞋子主线程仍然受到影响。
提前非常感谢!
没有看到你的代码,我不能给你任何具体的指导。但是,例如,这段代码对我来说就很好。请注意,如果在对话框启动时完成了繁琐的计算,您将在关闭对话框后的片刻后才能看到结果;对话框启动时,鞋子不会改变窗口 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