2009-06-06 5 views
2

작업이 끝날 때까지 GUI가 멈추지 않도록 다른 스레드에서 신발에 무거운 작업을 실행하는 방법이 있습니까? (다운로드와 비슷하지만 스윙의 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 
관련 문제