2011-04-23 3 views
0

Java newbie here ...주의!SwingWorker 작업에서 execute()를 사용하는 이상한 결과

나는 example을 기본으로이 연습 응용 프로그램을 설정했습니다. 불행히도 나는 문제가있다. 방금이 프로그램을 실행하면 SwingWorker 작업은 매우 작은 데이터 세트에서 작동하지만 더 큰 데이터 세트를 통해 부분적으로 멈출 것입니다. 나는이 응용 프로그램이 가장 효율적이지는 않지만, 왜 그냥 멈추는 지 (또는 심지어 어디에서) 실마리가 나는지 알 수 없다.

코드를 here에 넣었습니다.

미리 감사드립니다.

+0

디버깅 해 보셨습니까? 작업자 스레드를 일시 중지하고 어디서 멈춰 있는지 봅니다. –

답변

1

스레드가 멈춘 것으로 판단되면 스택 추적을 만들거나 디버거를 사용하십시오. 아이디어를 주어야합니다. 코드 검토 : 스윙 이벤트 스레드에서만 스윙 요소를 변경해야합니다. 즉 완료 코드는 텍스트 필드를 계산 결과로 설정해야합니다.

+0

고마워요. 텍스트 업데이트를 done 함수로 옮기면 적어도 지금까지 진행 상황을 표시하게 만들었습니다. 그러나 그 작업이 조급하게보고하고 있음을 보여줍니다. 나는 이걸로 스택 추적을 얻는 방법을 모르겠다. 자바에 따르면 분명히 "잘못되었다". 디버거를 통해 다시 한 번 살펴 보겠습니다. – iwasinnamuknow

+0

doInBackground에있는 코드를'try {} catch (Exception e) {e.printStackTrace(); }' –

+0

감사 Jochen. 진행률 막대 값> 100을 설정하려고 시도했을 때 던졌습니다. 진행률 막대의 최대 값을 설정하면 그렇게 할 수 있다고 가정했지만 잘못되었습니다. – iwasinnamuknow