Μακρόχρονες λειτουργίες

Το πακέτο org.eclipse.jface.operations ορίζει διεπαφές για μακρόχρονες λειτουργίες που απαιτούν ενδείξεις προόδου ή επιτρέπουν στον χρήστη να ακυρώνει τη λειτουργία. Οι διεπαφές αυτές χρησιμοποιούνται στην υλοποίηση των πλαισίων διαλόγου και των προβολών προόδου του πάγκου εργασίας.

Γενικά, οι πρόσθετες λειτουργίες θα πρέπει να χρησιμοποιούν την υποστήριξη του πάγκου εργασίας που παρέχεται στη διεπαφή IProgressService για την εκτέλεση μακρόχρονων λειτουργιών, έτσι ώστε όλες οι πρόσθετες λειτουργίες να έχουν μια ομοιόμορφη παρουσίαση προόδου. Δείτε Υποστήριξη ταυτοχρονισμού πάγκου εργασίας για την πλήρη περιγραφή της διαθέσιμης υποστήριξης για πλαίσια διαλόγου και προβολές προόδου. Στη συνέχεια της παρούσας συζήτησης επισημαίνονται οι λεπτομέρειες της υποδομής λειτουργιών του JFace που χρησιμοποιείται από τον πάγκο εργασίας.

Εκτελέσιμα και πρόοδος

Το περιβάλλον εκτέλεσης πλατφόρμας ορίζει μια κοινή διεπαφή, IProgressMonitor, η οποία χρησιμοποιείται για την αναφορά της προόδου προς τον χρήστη, ενώ μακρόχρονες λειτουργίες βρίσκονται σε εξέλιξη. Ο πελάτης μπορεί να παρέχει μια λειτουργία παρακολούθησης, ως παράμετρο σε πολλές μεθόδους API της πλατφόρμας, όταν είναι σημαντική η προβολή της προόδου στον χρήστη.

Το JFace ορίζει πιο συγκεκριμένες διεπαφές για αντικείμενα τα οποία υλοποιούν το περιβάλλον χρήστη για την παρακολούθηση της προόδου. 

Η IRunnableWithProgress είναι η διεπαφή για μια μακρόχρονη λειτουργία.  Η μέθοδος run για τη διεπαφή αυτή διαθέτει μια παράμετρο IProgressMonitorπου χρησιμοποιείται για την αναφορά της προόδου και τον έλεγχο για τυχόν ενέργεια ακύρωσης από τον χρήστη.

Η IRunnableContext είναι η διεπαφή για τις διάφορες θέσεις στο περιβάλλον χρήστη, όπου μπορεί να αναφερθεί η πρόοδος.  Οι κλάσεις που υλοποιούν τη διεπαφή αυτή μπορούν να επιλέξουν τη χρησιμοποίηση διαφορετικών τεχνικών για την εμφάνιση της προόδου και την εκτέλεση της λειτουργίας.  Για παράδειγμα, η κλάση ProgressMonitorDialog υλοποιεί τη διεπαφή αυτή, εμφανίζοντας ένα πλαίσιο διαλόγου προόδου.  Η κλάση IWorkbenchWindow υλοποιεί τη διεπαφή αυτή εμφανίζοντας την πρόοδο στη γραμμή κατάστασης του παραθύρου του πάγκου εργασίας.  Η κλάσηWizardDialog υλοποιεί τη διεπαφή αυτή για την εμφάνιση μακρόχρονων λειτουργιών μέσα στη γραμμή κατάστασης οδηγού.

Σημείωση:  Το περιβάλλον χρήστη του πάγκου εργασίας παρέχει πρόσθετη υποστήριξη για λειτουργίες στην κλάση WorkspaceModifyOperation. Η κλάση αυτή απλοποιεί την υλοποίηση μακρόχρονων λειτουργιών οι οποίες τροποποιούν το χώρο εργασίας. Αντιστοιχίζεται μεταξύ IRunnableWithProgress και IWorkspaceRunnable.  Για περισσότερες λεπτομέρειες, δείτε το javadoc.

Αποκλειστικές λειτουργίες

Η κλάση ModalContext παρέχεται για την εκτέλεση μιας λειτουργίας η οποία είναι αποκλειστική από την προοπτική κώδικα πελάτη. Χρησιμοποιείται στις διάφορες υλοποιήσεις της διεπαφής IRunnableContext.  Αν η πρόσθετη λειτουργία σας πρέπει να περιμένει την ολοκλήρωση μιας μακρόχρονης λειτουργίας πριν συνεχίσει την εκτέλεση, τότε μπορεί να χρησιμοποιηθεί η κλάση ModalContext για την επίτευξη αυτή, ενώ ταυτόχρονα το περιβάλλον χρήστη θα παραμένει αλληλεπιδραστικό.

Όταν εκτελείτε μια λειτουργία σε αποκλειστικό περιβάλλον, μπορείτε να επιλέξετε τη διακλάδωση της λειτουργίας σε ένα διαφορετικό νήμα. Εάν το fork έχει την τιμή false, η λειτουργία θα εκτελείται στο νήμα κλήσης.  Εάν το fork είναι true,  τότε η λειτουργία θα εκτελείται σε ένα νέο νήμα, το νήμα κλήσης θα μπλοκάρεται και ο βρόχος συμβάντων περιβάλλοντος χρήστη θα εκτελείται μέχρι η λειτουργία να τερματιστεί.  

Για περισσότερες πληροφορίες σχετικά με το βρόχο συμβάντων περιβάλλοντος χρήστη, δείτε Θέματα δημιουργίας νημάτων για πελάτες.