Tidkrevende operasjoner

Pakken org.eclipse.jface.operations definerer grensesnitt for tidkrevende operasjoner som krever fremdriftsindikatorer, eller som lar brukeren avbryte operasjonen. Disse grensesnittene brukes i implementeringen av arbeidsbenkens dialogbokser og visninger for fremdrift.

Vanligvis bør plugin-moduler bruke arbeidsbenkstøtten i IProgressService ved kjøring av tidkrevende operasjoner, slik at fremdriften blir vist på samme måte i alle plugin-moduler. Du finner en komplett beskrivelse av tilgjengelig støtte for dialogbokser og visninger for fremdrift, i Støtte for samtidighet i arbeidsbenken. Her ser vi nærmere på detaljer rundt infrastrukturen for JFace-operasjoner som brukes av arbeidsbenken.

Kjørbarhet og fremdrift

Plattformkjøretiden definerer et felles grensesnitt, IProgressMonitor, som rapporterer fremdriften til brukeren mens tidkrevende operasjoner utføres. Klienten kan bruke en overvåker som en parameter i en rekke metoder for plattform-API, når det er viktig at brukeren får se fremdriften.

JFace definerer mer spesifikke grensesnitt for objekter som implementerer brukergrensesnittet for en fremdriftsovervåker. 

IRunnableWithProgress er grensesnittet for tidkrevende operasjoner.  Grensesnittets run-metode har en IProgressMonitor-parameter som brukes til å rapportere fremdrift, og kontrollere om brukeren har avbrutt operasjonen.

IRunnableContext er grensesnittet for de stedene i brukergrensesnittet der fremdriftsrapportering kan utføres.  Klasser som implementerer dette grensesnittet, kan vise fremdriften og kjøre operasjonen ved hjelp av andre metoder.  For eksempel implementerer ProgressMonitorDialog dette grensesnittet ved å vise en dialogboks for fremdrift.  IWorkbenchWindow implementerer dette grensesnittet ved å vise fremdriften på statuslinjen i arbeidsbenkvinduet.  WizardDialog implementerer dette grensesnittet for å vise tidkrevende operasjoner på statuslinjen i veiviseren.

Merk:  Brukergrensesnittet for arbeidsbenken tilbyr ytterligere støtte for operasjoner i WorkspaceModifyOperation. Klassen forenkler implementeringen av tidkrevende operasjoner som endrer arbeidsområdet. Den oppretter tilordninger mellom IRunnableWithProgress og IWorkspaceRunnable.  Du finner flere opplysninger i Javadoc.

Modale operasjoner

Klassen ModalContext brukes for å kjøre en operasjon som er modal fra klientkodens perspektiv. Den brukes i de ulike implementeringene av IRunnableContext.   Hvis plugin-modulen må vente på at tidkrevende operasjoner skal fullføres før den kan fortsette utføringen, kan ModalContext brukes til dette formål samtidig som brukergrensesnittet svarer.

Når du kjører en operasjon i en modal kontekst, kan du forgrene operasjonen i en annen tråd. Hvis fork er "false", vil operasjonen bli kjørt i kalltråden. Hvis fork er "true",  vil operasjonen bli kjørt i en ny tråd, kalltråden vil bli blokkert og hendelsesløyfen for brukergrensesnittet vil bli kjørt til operasjonen avsluttes.  

Du finner mer informasjon om hendelsessløyfen for brukergrensesnitt, i Trådbehandlingsspørsmål.