Tidskrävande åtgärder

I paketet org.eclipse.jface.operations definieras gränssnitt för tidskrävande åtgärder som kräver förloppsindikatorer eller låter användaren avbryta åtgärden. Dessa gränssnitt används i implementationen av arbetsmiljöns dialogrutor och vyer som visar förlopp.

I allmänhet bör insticksprogram använda den arbetsmiljösupport som finns i IProgressService för att köra tidskrävande åtgärder så att alla insticksprogram har en konsekvent presentation av förlopp. I Funktioner för samtidighet i arbetsmiljön finns en fullständig diskussion av tillgänglig support för förloppsdialogrutor och -vyer. Under återstoden av den här diskussionen framhävs de detaljer i JFace-åtgärdernas infrastruktur som används av arbetsmiljön.

Körbara åtgärder och förlopp

Vid körning av plattformen definieras ett vanligt gränssnitt, IProgressMonitor, som används för att rapportera förloppet för användaren vid körning av tidskrävande åtgärder. I klienten kan en övervakare tillhandahållas som en parameter i många av plattformens API-metoder när det är viktigt att visa förlopp för användaren.

Med JFace definieras mer specifika gränssnitt för objekt som implementerar användargränssnittet för en förloppsövervakare. 

IRunnableWithProgress är gränssnittet för en tidskrävande åtgärd.  Körmetoden för gränssnittet har en IProgressMonitor -parameter som används för att rapportera förlopp och kontrollera avbrott som initieras av användaren.

IRunnableContext är gränssnittet för olika platser i användargränssnittet där förlopp kan rapporteras. Klasser som implementerar det här gränssnittet kan välja att använda olika tekniker för att visa förloppet och köra åtgärden. Exempelvis implementerar ProgressMonitorDialog detta gränssnitt genom att visa en förloppsdialogruta. IWorkbenchWindow implementerar detta gränssnitt genom att visa förlopp på statusraden i arbetsmiljöfönstret. WizardDialog implementerar detta gränssnitt för att visa tidskrävande åtgärder på statusraden i guiden.

Obs! Arbetsmiljöns användargränssnitt ger ytterligare support för åtgärder i WorkspaceModifyOperation. Med den här klassen förenklas implementationen av tidskrävande åtgärder som ändrar arbetsytan. Den avbildar mellan IRunnableWithProgress och IWorkspaceRunnable.  I javadoc finns mer detaljerad information.

Modalåtgärder

Klassen ModalContext finns för att köra en åtgärd som är modal från klientkodens perspektiv. Den används inuti de olika implementationerna av IRunnableContext.  Om insticksprogrammet behöver vänta på slutförande av en tidskrävande åtgärd innan körningen kan fortsätta kan ModalContext användas för detta, samtidigt som användargränssnittet hålls mottagligt.

När du kör en åtgärd i en modal kontext kan du välja att förgrena åtgärden i en annan tråd. Om fork är "falskt" körs åtgärden i anropande tråd. Om fork är "sant" körs åtgärden i en ny tråd, anropande tråd blockeras och användargränssnittets händelsloop körs tills åtgärden avslutas.  

Mer information om användargränssnittets händelseloop finns i Trådproblem.