ເນື້ອໃນ

# ບໍລິການ ScriptForge.Timer

ບໍລິການ Timer ໃຊ້ວັດແທກໄລຍະເວລາທີ່ໃຊ້ໃນການປະມວນຜົນສະຄຣິບຂອງຜູ້ໃຊ້.

Timer ໃຊ້ວັດແທກ ໄລຍະເວລາ (durations). ມັນສາມາດ:

- ເລີ່ມຕົ້ນ (Started), ເພື່ອບົ່ງບອກວ່າຈະເລີ່ມວັດແທກເວລາຕອນໃດ.

- ຢຸດຊົ່ວຄາວ (Suspended), ເພື່ອພັກການວັດແທກເວລາ.

- ກັບມາເຮັດວຽກຕໍ່ (Resumed), ເພື່ອວັດແທກເວລາຕໍ່ໄປຫຼັງຈາກທີ່ໄດ້ຢຸດຊົ່ວຄາວ.

- ເລີ່ມໃໝ່ (Restarted), ເຊິ່ງຈະຍົກເລີກການວັດແທກກ່ອນໜ້ານີ້ ແລະ ເລີ່ມຕົ້ນ Timer ໃໝ່ຈາກສູນ.

ໄລຍະເວລາຈະຖືກສະແດງເປັນວິນາທີ ດ້ວຍຄວາມລະອຽດທົດສະນິຍົມ 3 ຕຳແໜ່ງ (ມິນລິວິນາທີ). ຄ່າໄລຍະເວລາ 12.345 ໝາຍເຖິງ 12 ວິນາທີ ແລະ 345 ມິນລິວິນາທີ

## ການເອີ້ນໃຊ້ບໍລິການ

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ Timer, ໄລບຣາຣີ ScriptForge ຈະຕ້ອງຖືກໂຫຼດ ຫຼື ອິມພອດກ່ອນ:

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from 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.

## ວິທີການ (Methods)

ທຸກໆວິທີການບໍ່ຕ້ອງການອາກິວເມນ ແລະ ຈະສົ່ງຄ່າ 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 ໃນຄັ້ງຕໍ່ໄປຈະບໍ່ສາມາດສືບຕໍ່ການວັດແທກເວລາໄດ້. ໃນທຳນອງດຽວກັນ, ຫຼັງຈາກທີ່ Timer ຖືກຢຸດແລ້ວ, ການເອີ້ນໃຊ້ວິທີການ Start ຈະເປັນການເລີ່ມຕົ້ນໃໝ່ຄືກັບວ່າມັນເປັນ Timer ໃໝ່ທີ່ວ່າງເປົ່າ.

##### ໃນ 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 ຮັບຄ່າອາກິວເມນໄລຍະເວລາເປັນມິນລີວິນາທີ (milliseconds) ໃນຂະນະທີ່ຟັງຊັນ sleep ໃນ Python ໃຊ້ເປັນວິນາທີ (seconds).

## ການເຮັດວຽກກັບຫຼາຍໂມງຈັບເວລາ

ມັນເປັນໄປໄດ້ທີ່ຈະສ້າງບໍລິການ 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()

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ຟັງຊັນ Now

ຟັງຊັນ Timer

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!