2009-06-06 4 views
2

作業が終了するまでGUIがフリーズしないように、別のスレッドで靴に重い作業を実行する方法はありますか? (スムース。ダウンロードと似ていますが、SwingのSwingWorker.classのように一般的です)。別のスレッドでの靴と重い作業

私は次のことを試してみました:

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 
関連する問題