2015-01-22 3 views
0

포크를 false로 설정하면 jface (진행 상태 불확실)에서 진행 모니터 대화 상자가 생깁니다. 즉, 대화 상자가 기본 GUI 스레드에서 실행되고 모니터가 진행률을 표시하지 않습니다. 진행률 표시 줄은 그냥 비어 있습니다. 기본 GUI에서 대화 상자를 실행하고 싶지만 진행률 표시 줄을 계속 표시하려고합니다. 내가 어떻게 해?JFace ProgressMonitorDialog가 fork가 false 일 때 진행 표시 줄을 표시하지 않습니다.

정확한 문제는 다음과 같습니다. 진행 모니터를 시작한 다음 서버 호출을 한 다음 서버 호출이 반환 된 후; 별도의 스레드에서 서버 호출 결과에서 처리 - 다시 UI 스레드이며 대화 상자,보기 등이 포함됩니다. 문제는 서버 호출 전에 시작된 첫 번째 스레드의 진행 모니터입니다 (서버 호출은 serparate thread)가 서버 결과를 처리하기 위해 두 번째 실행 가능한 대화 상자 /보기 뒤에 숨겨져 있습니다.

답변

2

UI 스레드가 바쁜 경우 진행률 대화 상자 자체를 다시 그리는 시간이 없습니다. the run method의 fork 매개 변수는 대화 상자이 UI 스레드에서 실행되는지 여부를 제어하지 않습니다. 항상 필요하며 사용자의 IRunnableWithProgress이 제어하는지 여부를 제어합니다. 그래서 true을 전달하는 것이 좋습니다.

+0

Windows에서 fork 매개 변수에 false를 지정하면 "응답하지 않음"이라는 창이 나타날 수 있습니다. 특히 진행 상황을 업데이트하지 않는 프로세스를 실행중인 경우. –

+0

그래,하지만 내 문제는 같다 : 진행 모니터를 시작한 다음 서버 호출을 한 다음 서버 호출이 반환 된 후; 별도의 스레드에서 서버 호출 결과에서 처리 - 다시 UI 스레드이며 대화 상자,보기 등이 포함됩니다. 문제는 서버 호출 전에 시작된 첫 번째 스레드의 진행 모니터입니다 (서버 호출은 serparate thread)는 서버 결과를 처리하기 위해 두 번째 실행 가능한 대화 상자/뷰 뒤에 숨어 있습니다. – SomeDude

+1

아마도이 모든 것을 하나의 실행 파일이나 작업을 위임 할 수있는 항목으로 리팩토링하고 자체 대화 상자를 열지 않아야합니다. 그런 다음 선입견/주 대화 상자의 진행 모니터에서 여러 하위 모니터를 사용하십시오. http://help.eclipse.org/luna/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/runtime/SubMonitor.html. – nitind