私はShoesを学びたいと思っており、SQLスクリプトを1行ずつ実行する簡単なGUIを作ることに決めました。RubyシューズとMySQL:GUIがフリーズします。スレッドを使用すべきですか?
私の問題は、私の機能を実行するボタンを押しているGUIで、スクリプトを実行するために関数がかかる時間にGUIがフリーズすることです。
長いスクリプトでは、数分かかることがあります。
誰かが同様の問題(http://www.stackoverflow.com/questions/958662/shoes-and-heavy-operation-in-separate-thread)を持っていて、ちょうどThreadの下に集中的なものを置くことが示唆されていました:以前に言及したスレッドのmath-codeをコピーしてmysql-codeを置き換えると、おそらく、私がmysql-adapterをどのように使用しているかという問題を示唆しているでしょうか?
は、以下のコードの簡易版である:
problem.rb:
# copy the mysql-gem if not in gem-folder already
Shoes.setup do
gem 'mysql'
end
require "mysql"
# the function that does the mysql stuff
def someFunction
con = Mysql::real_connect("myserver", "user", "pass", "db")
scriptFile = File.open("myfile.sql", "r")
script = scriptFile.read
scriptFile.close
result = []
script.each_line do |line|
result << con.query(line)
end
return result
end
# the Shoes app with the Thread
Shoes.app do
stack do
button "Execute someFunction" do
Thread.start do
result = someFunction
para "Done!"
end
end
end
stack do
button "Can't click me when GUI is frozen" do
alert "GUI wasn't frozen?"
end
end
end
ここでの質問は何ですか? – sml