Lang andauernde Operationen

Das Paket org.eclipse.jface.operations definiert Schnittstellen für lang andauernde Operationen, für die Statusanzeigefelder benötigt werden oder die der Benutzer während der Ausführung abbrechen können muss. Diese Schnittstellen werden in der Implementierung der Workbench-Verarbeitungsfortschritt-Dialoge und -Ansichten verwendet.

Im Allgemeinen sollten Plug-ins die Workbench-Unterstützung verwenden, die in IProgressService für die Ausführung langer Operationen zur Verfügung gestellt wird, so dass alle Plug-ins eine konsistente Darstellung des Fortschritts haben. Eine vollständige Beschreibung der verfügbaren Unterstützung für Verarbeitungsfortschritt-Dialoge und -Ansichten finden Sie unter Workbenchunterstützung von gemeinsamem Zugriff. Der Rest dieser Beschreibung hebt die Details der JFace Unternehmensaktivitäten-Infrastruktur hervor, die von der Workbench verwendet wird.

Ausführbare Ressourcen und Fortschritt

Die Laufzeit der Plattform definiert eine gemeinsame Schnittstelle namens IProgressMonitor, mit der dem Benutzer bei lang andauernden Operationen Informationen zum Status gemeldet werden. In vielen API-Methoden der Plattform kann der Client ein Überwachungsprogramm als Parameter angeben, wenn es wichtig ist, dass der Benutzer Statusinformationen erhält.

JFace definiert spezifischere Schnittstellen für Objekte, die die Benutzerschnittstelle für eine Statusüberwachung implementieren. 

IRunnableWithProgress ist die Schnittstelle für eine lang andauernde Operation.  Die Methode run für diese Schnittstelle enthält einen Parameter IProgressMonitor , mit dem der Status gemeldet und auf Abbruch durch den Benutzer geprüft werden kann.

IRunnableContext ist die Schnittstelle für die verschiedenen Stellen in der Benutzerschnittstelle, an denen der Status gemeldet werden kann.  Klassen, die diese Schnittstelle implementieren, können verschiedene Methoden einsetzen, um den Status zu melden und den Arbeitsgang durchzuführen.  So implementiert beispielsweise ProgressMonitorDialog diese Schnittstelle durch Darstellung eines Fortschrittdialogs.  IWorkbenchWindow hingegen implementiert die Schnittstelle durch eine Statusanzeige in der Statuszeile des Workbenchfensters.  WizardDialog schließlich implementiert die Schnittstelle auf eine Art, dass sie lang andauernde Operationen in der Statuszeile des Assistenten anzeigt.

Hinweis:  Die Benutzerschnittstelle der Workbench bietet unter WorkspaceModifyOperation zusätzliche Unterstützung für Operationen. Diese Klasse vereinfacht die Implementierung von Operationen mit langer Laufzeit, die den Arbeitsbereich ändern. Sie erstellt eine Zuordnung zwischen IRunnableWithProgress und IWorkspaceRunnable.  Weitere Details finden Sie in der Javadoc-Datei.

Modusbezogene Operationen

Mit der Klasse ModalContext kann eine Operation ausgeführt werden können, die aus Sicht des Clientcodes modusabhängig ist. Sie wird in den verschiedenen Implementierungen der Schnittstelle IRunnableContext verwendet.  Wenn Ihr Plug-in den Abschluss einer lang andauernden Operationen abwarten muss, bevor seine Ausführung fortgesetzt werden kann, können Sie dies über eine Klasse ModalContext erreichen und gleichzeitig die Empfangsbereitschaft der Benutzerschnittstelle aufrecht erhalten.

Wenn Sie eine Operation in einem modusabhängigen Kontext ausführen, können Sie die Operation in einen anderen Thread aufspalten lassen. Falls für die Aufspaltung "false" gilt, wird die Operation im aufrufenden Thread ausgeführt.  Gilt für die Aufspaltung hingegen "true",  wird die Operation in einem neuen Thread ausgeführt, der aufrufende Thread wird blockiert, und die Ereignisschleife der Benutzerschnittstelle wird ausgeführt, bis die Operation beendet wurde.  

Weitere Informationen zur Ereignisschleife der Benutzerschnittstelle finden Sie unter Überlegungen zu Client-Threads.