Langdurige bewerkingen

Het org.eclipse.jface.operations-pakket definieert interfaces voor langdurige bewerkingen die voortgangsindicaties nodig hebben of het annuleren van de bewerking door de gebruiker toestaan. Deze interfaces worden gebruikt in de implementatie van de voortgangsdialoogvensters en -views van de workbench.

In het algemeen moet door de plugins workbenchondersteuning worden gebruikt die wordt geleverd in IProgressService voor het uitvoeren van langdurige bewerkingen, zodat alle plugins een consistente presentatie van de voortgang krijgen. Zie Ondersteuning voor gemeenschappelijk gebruik van de workbench voor een volledige bespreking van de beschikbare ondersteuning voor voortgangsdialoogvensters en -views. Hier wordt verder ingegaan op de details van de infrastructuur van JFace-bewerkingen die wordt gebruikt door de workbench.

Runnables en voortgang

De platformruntime definieert een gemeenschappelijke interface, IProgressMonitor, die aan de gebruiker de voortgang van de langdurige bewerkingen die worden uitgevoerd, rapporteert. De client kan als parameter in vele platform-API-methoden een monitor leveren wanneer het belangrijk is dat de voortgang wordt getoond aan de gebruiker.

Door JFace worden meer specifieke interfaces gedefinieerd voor objecten die de gebruikersinterface implementeren voor een voortgangsmonitor.  

IRunnableWithProgress is de interface voor een langdurige bewerking.  De uitvoeringsmethode van deze interface bevat een IProgressMonitor -parameter die wordt gebruikt om de voortgang te melden en om te controleren of door de gebruiker is geannuleerd.

IRunnableContext is de interface voor de verschillende plaatsen in de gebruikersinterface waar voortgang kan worden gerapporteerd.  Door de klassen die deze interface implementeren kunnen andere technieken worden gebruikt voor het afbeelden van de voortgang en het uitvoeren van de bewerking.   Deze interface wordt bijvoorbeeld geïmplementeerd door ProgressMonitorDialog door het afbeelden van een voortgangsdialoogvenster.   IWorkbenchWindow implementeert deze interface door de voortgang af te beelden in de statusregel van het workbenchvenster.   WizardDialog implementeert deze interface om langdurige bewerkingen binnen de statusregel van de wizard af te beelden.

Opmerking:  De workbenchgebruikersinterface levert extra ondersteuning voor bewerkingen in WorkspaceModifyOperation. Door deze klasse wordt de implementatie van langdurige bewerkingen die het werkgebied wijzigen, vereenvoudigd. Deze wijst toe tussen IRunnableWithProgress en IWorkspaceRunnable.   Zie Javadoc voor meer details.

Modale bewerkingen

De ModalContext-klasse wordt geleverd om een bewerking uit te voeren die modaal is vanuit het perspectief van de clientcode. Deze wordt binnen de verschillende implementaties van IRunnableContext gebruikt.   Als uw plugin moet wachten op de voltooiing van een langdurige bewerking voordat deze kan doorgaan met de verwerking, kan ModalContext hiervoor worden gebruikt terwijl de gebruikersinterface responsief blijft.

Als u een bewerking uitvoert in een modale context, kunt u ervoor kiezen de bewerking in een andere thread op te splitsen. Als splitsen onwaar is, wordt de bewerking uitgevoerd in de aanroepende thread.  Als splitsen waar is,  wordt de bewerking uitgevoerd in een nieuwe thread, wordt de aanroepende thread geblokkeerd en wordt de gebruikersinterface-eventlus net zolang uitgevoerd totdat de bewerking wordt beëindigd.   

Voor meer informatie over de gebruikersinterface-eventlus, kunt u Problemen met threading voor clients raadplegen.