장기 실행 조작

org.eclipse.jface.operations 패키지는 진행 표시기가 필요하거나 오퍼레이션의 사용자 취소를 허용하는 장기 실행 오퍼레이션에 대한 인터페이스를 정의합니다. 이들 인터페이스는 Workbench 진행 대화 상자 및 보기의 구현에 사용됩니다.

일반적으로 플러그인은 장기 오퍼레이션 실행을 위해 IProgressService에서 제공되는 Workbench 지원을 사용해야 하므로 모든 플러그인은 일관적인 진행 프리젠테이션을 갖게 됩니다. 진행 대화 상자 및 보기를 위한 사용 가능한 지원의 전체 논의에 대해서는 Workbench 동시성 지원을 참조하십시오. 이 논의의 나머지는 Workbench에서 사용되는 JFace 오퍼레이션 기반구조의 세부사항을 자세히 설명합니다.

실행 프로그램 및 진행

플랫폼 런타임은 공통 인터페이스인 IProgressMonitor를 정의하는 데, 이 인터페이스는 장기 실행 조작이 진행 중인 동안 사용자에게 진행 상태를 보고하는 데 사용됩니다. 클라이언트는 사용자에게 진행을 표시할 필요가 있을 경우 다수의 플랫폼 API 메소드에서 매개변수로 모니터를 제공할 수 있습니다.

JFace는 진행 모니터에 대한 사용자 인터페이스를 구현하는 오브젝트에 대해 보다 자세한 인터페이스를 정의합니다. 

IRunnableWithProgress는 장기 실행 조작을 위한 인터페이스입니다.  이 인터페이스에 대한 run 메소드에는 진행 상태를 보고하고 사용자 취소를 확인하는 IProgressMonitor 매개변수가 있습니다.

IRunnableContext는 진행 상태가 보고될 수 있는 UI의 서로 다른 위치에 대한 인터페이스입니다.  이 인터페이스를 구현하는 클래스는 진행 상태 표시 및 조작 실행에 서로 다른 기술을 사용할 수 있습니다.  예를 들어, ProgressMonitorDialog는 진행 대화 상자를 표시하여 이 인터페이스를 구현합니다.  IWorkbenchWindow는 진행 상태를 Workbench 창의 상태 표시줄에 표시하여 이 인터페이스를 구현합니다.  WizardDialog는 마법사 상태 표시줄 내에 장기 실행 조작을 표시하여 이 인터페이스를 구현합니다.

참고:  Workbench UI는 WorkspaceModifyOperation에서 조작에 대한 추가 지원을 제공합니다. 이 클래스는 작업공간을 수정하는 장기 실행 조작 구현을 단순화합니다. IRunnableWithProgressIWorkspaceRunnable 사이에 맵핑합니다.  추가 세부사항은 javadoc를 참조하십시오.

모달(modal) 조작

ModalContext 클래스는 클라이언트 코드 관점에서 모달(modal) 조작을 실행하기 위해 제공됩니다. IRunnableContext에 대한 서로 다른 구현 내에서 사용됩니다.  플러그인이 실행을 계속하기 전에 장기 실행 조작이 완료되기를 기다려야 하는 경우, 사용자 인터페이스의 응답을 유지하면서 ModalContext를 사용하여 이를 수행할 수 있습니다.

모달(modal) 컨텍스트에서 조작을 실행할 경우, 다른 스레드에서 조작을 분기하도록 선택할 수 있습니다. 분기가 false이면, 조작은 호출 스레드에서 실행됩니다.  분기가 true이면, 조작은 새 스레드에서 실행되고 호출 스레드는 차단되며, UI 이벤트 루프는 조작이 종료될 때까지 실행됩니다.  

UI 이벤트 루프에 대한 자세한 정보는 클라이언트의 스레딩 문제를 참조하십시오.