Υπηρεσία ScriptForge.Timer

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

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

Εικονίδιο συμβουλής

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


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

Πριν να χρησιμοποιήσετε την υπηρεσία Timer, πρέπει να φορτωθεί ή να εισαχθεί η βιβλιοθήκη ScriptForge:

note

• Οι μακροεντολές Basic απαιτούν τη φόρτωση της βιβλιοθήκης ScriptForge χρησιμοποιώντας την ακόλουθη πρόταση:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Τα σενάρια Python απαιτούν εισαγωγή από την ενότητα scriptforge:
από το scriptforge import CreateScriptService


Σε Basic

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


    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim myTimer As Variant
    myTimer = CreateScriptService("Timer", True)
    'Ο χρονοδιακόπτης ξεκινά αμέσως όταν το δεύτερο όρισμα = True, προεπιλογή = 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

Ο πραγματικός χρόνος που έχει παρέλθει από την έναρξη ή μεταξύ εκκίνησης και διακοπής (συμπεριλαμβανομένων των αναστολών και του χρόνου λειτουργίας)


Εικονίδιο συμβουλής

Σημειώστε ότι η ιδιότητα TotalDuration ισοδυναμεί με την άθροιση των ιδιοτήτων Duration και SuspendDuration.


Μέθοδοι

Όλες οι μέθοδοι δεν απαιτούν ορίσματα και επιστρέφουν μια τιμή 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
  
note

Εάν καλέσετε τη μέθοδο 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))
  
note

Προσέξτε ότι η συνάρτηση 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()
  
warning

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


Παρακαλούμε, υποστηρίξτε μας!