Περιεχόμενα
Δείκτης 🔎︎

# Υπηρεσία ScriptForge.Timer

Η υπηρεσία Timer μετρά τον χρόνο που απαιτείται για την εκτέλεση των σεναρίων χρήστη.

Ένα Timer (Χρονόμετρο) μετρά τις durations (διάρκειες). Μπορεί να είναι:

- Started (εκκίνηση), για να υποδείξετε πότε θα ξεκινήσει η μέτρηση του χρόνου.

- Suspended (Σε αναστολή), για παύση της μέτρησης του χρόνου λειτουργίας.

- Resumed (Συνέχεια), για να συνεχιστεί η παρακολούθηση του χρόνου εκτέλεσης μετά την αναστολή του χρονοδιακόπτη.

- Restarted (Επανεκκίνηση), η οποία θα ακυρώσει τις προηγούμενες μετρήσεις και θα ξεκινήσει το Timer στο μηδέν.

Οι διάρκειες εκφράζονται σε δευτερόλεπτα με ακρίβεια 3 δεκαδικών ψηφίων (χιλιοστά του δευτερολέπτου). Μια τιμή διάρκειας 12.345 σημαίνει 12 δευτερόλεπτα και 345 χιλιοστά του δευτερολέπτου

## Κλήση υπηρεσίας

##### Σε Basic

Το παρακάτω παράδειγμα δημιουργεί ένα αντικείμενο Timer με το όνομα myTimer και το ξεκινά αμέσως.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        'The timer starts immediately when the second argument = True, default = False

Συνιστάται η απελευθέρωση πόρων μετά τη χρήση:

        Set myTimer = myTimer.Dispose()

##### Σε Python

        from scriptforge import CreateScriptService
        myTimer = CreateScriptService("Timer", start = True)
        # ...
        myTimer = myTimer.Dispose()

## Ιδιότητες

Όνομα | Μόνο για ανάγνωση | Τύπος | Περιγραφή
Duration | Ναι | Double | Ο πραγματικός χρόνος λειτουργίας που έχει παρέλθει από την έναρξη ή μεταξύ έναρξης και διακοπής (δεν λαμβάνεται υπόψη ο χρόνος αναστολής)
IsStarted | Ναι | Boolean | True όταν ο χρονοδιακόπτης ξεκινά ή αναστέλεται
IsSuspended | Ναι | Boolean | True όταν ο χρονοδιακόπτης ξεκινά και αναστέλεται
SuspendDuration | Ναι | Double | Ο πραγματικός χρόνος που παρήλθε κατά την αναστολή από την έναρξη ή μεταξύ έναρξης και διακοπής
TotalDuration | Ναι | Double | Ο πραγματικός χρόνος που έχει παρέλθει από την έναρξη ή μεταξύ εκκίνησης και διακοπής (συμπεριλαμβανομένων των αναστολών και του χρόνου λειτουργίας)

Note that the TotalDuration property is equivalent to summing the Duration and SuspendDuration properties.

## Μέθοδοι

Όλες οι μέθοδοι δεν απαιτούν ορίσματα και επιστρέφουν μια τιμή Boolean.

Εάν η επιστρεφόμενη τιμή είναι False, τότε δεν συνέβη τίποτα.

Όνομα | Περιγραφή | Επιστρεφόμενη τιμή
Continue | Συνεχίζει το Timer (Χρονόμετρο) εάν έχει ανασταλεί | False εάν το χρονόμετρο δεν είναι σε αναστολή
Restart | Τερματίζει το Timer και απορρίπτει τις τρέχουσες τιμές ιδιοτήτων του, επανεκκινώντας ως νέο καθαρό Timer | False εάν το χρονόμετρο είναι ανενεργό
Start | Ξεκινά ένα νέο καθαρό χρονόμετρο | False εάν το χρονόμετρο έχει ήδη ξεκινήσει
Suspend | Αναστέλλει ένα εκτελούμενο χρονόμετρο | False εάν το χρονόμετρο δεν έχει ξεκινήσει ή έχει ήδη ανασταλεί
Terminate | Διακόπτει ένα χρονόμετρο που λειτουργεί | False εάν το χρονόμετρο δεν έχει ξεκινήσει ούτε έχει ανασταλεί

### Παράδειγμα:

Τα παρακάτω παραδείγματα σε Basic και Python επεξηγούν τη χρήση των μεθόδων και των ιδιοτήτων στην υπηρεσία Timer.

##### Σε Basic

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        'Ο χρόνος που έχει παρέλθει όσο είναι ανοιχτό το πλαίσιο διαλόγου θα υπολογίζεται ως χρόνος σε αναστολή
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        'Ο χρόνος που έχει παρέλθει όσο είναι ανοιχτό το πλαίσιο διαλόγου θα υπολογίζεται ως χρόνος εκτέλεσης
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        'Εμφανίζει τις μετρήσεις του τελικού χρόνου
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Εάν καλέσετε τη μέθοδο Terminate (Τερματισμός), οι επόμενες κλήσεις για τη μέθοδο Continue (Συνέχεια) δεν θα συνεχίσουν τη μέτρηση του χρόνου. Ομοίως, μετά τον τερματισμό ενός χρονομέτρου, η κλήση της μεθόδου Start (Έναρξη) θα τον επανεκκινήσει σαν να ήταν ένα καθαρό νέο χρονόμετρο.

##### Σε Python

        from time import sleep
        bas = CreateScriptService("Basic")
        myTimer.Start()
        sleep(0.5)
        myTimer.Suspend()
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
        myTimer.Continue()
        sleep(0.5)
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
        myTimer.Terminate()
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))

Προσέξτε ότι η συνάρτηση Wait (Αναμονή) στη Basic λαμβάνει ένα όρισμα διάρκειας σε χιλιοστά του δευτερολέπτου, ενώ η συνάρτηση sleep στην Python χρησιμοποιεί δευτερόλεπτα στο όρισμά της.

## Εργασία με πολλαπλά χρονόμετρα

Είναι δυνατή η παράλληλη δημιουργία πολλαπλών υπηρεσιών Timer, γεγονός που παρέχει ευελιξία στη μέτρηση του χρόνου σε διαφορετικά μέρη του κώδικα.

Το παρακάτω παράδειγμα δείχνει πώς να δημιουργήσετε δύο αντικείμενα Timer και να τα ξεκινήσετε ξεχωριστά.

##### Σε Basic

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        'Εκκινεί το myTimerA
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Εκκινεί το myTimerB
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Τερματισμός και των δύο χρονομέτρων
        myTimerA.Terminate()
        myTimerB.Terminate()

##### Σε Python

        from time import sleep
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        myTimerA.Start()
        sleep(1)
        bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
        myTimerB.Start()
        sleep(1)
        bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
        myTimerA.Terminate()
        myTimerB.Terminate()

Όλες οι ρουτίνες ή αναγνωριστικά του ScriptForge στη Basic που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζονται να χρησιμοποιηθούν σε μακροεντολές Basic ή σενάρια Python.

Σχετικά θέματα

Συνάρτηση Now

Συνάρτηση Timer