API Basic WaitUntil it - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Wait Until / Timeout

ClassicUO • Basic

Wait Until verifica una condizione fino al successo o alla scadenza. È un’estensione Basic, non un’istruzione VB.NET. Lavora nello script corrente senza creare thread o avviare altre procedure.

Sintassi esatta

Wait Until condition Timeout milliseconds

Parametri

  • condition — condition viene valutata subito e poi tra brevi attese. Usare Boolean o un confronto: il numero 0 significa false, gli altri valori seguono If. Il testo "false" non è Boolean false. Sono possibili chiamate UO e funzioni proprie; gli errori si propagano e gli effetti si ripetono a ogni verifica.
  • Timeout milliseconds — Timeout è obbligatorio. milliseconds viene valutato una volta prima della condizione: Integer 0..2147483647. Numeri negativi, frazioni e Strings generano prima un errore. Zero permette solo la verifica immediata. Altrove timeout rimane un nome di variabile valido.

Restituisce

L’istruzione non restituisce valori. Il successo continua alla riga seguente; la scadenza genera un errore con file e riga, gestibile da Try/Catch o On Error. Altrimenti fallisce l’esecuzione corrente. Nessun false automatico: l’esempio 2 crea una funzione che restituisce True/1 o False/0.

Comportamento

  • Il motore memorizza la durata e avvia uno Stopwatch monotono. La prima verifica immediata può riuscire anche con limite zero. Dopo false il ciclo controlla annullamento e pausa, calcola il residuo e attende al massimo 10 ms prima della prossima verifica. Non è un ciclo attivo continuo; la pianificazione del sistema può allungare l’intervallo.
  • La pausa sospende le verifiche ma il tempo reale conta nel limite. Alla ripresa una scadenza viene segnalata prima di verificare ancora. Stop interrompe l’attesa e salta Catch/Finally dello script come gli altri arresti d’emergenza. Non può interrompere forzatamente una chiamata bloccata dentro condition: usare funzioni brevi. Una verifica iniziata termina prima di elaborarne risultato o errore.
  • Un errore della condizione non diventa timeout. Errori normali e scadenze eseguono i Finally applicabili. Le variabili appartengono alla chiamata corrente; un nuovo ingresso riavvia il limite. Non esistono End Wait o un parametro aggiuntivo di intervallo. Wait(milliseconds) resta una funzione separata di ritardo.

Esempi

1. Controllare una funzione entro un limite

# checks parte da 0; Ready lo riceve ByRef e incrementa a ogni verifica. required=3 è ByVal e budget=5000 concede cinque secondi. Due verifiche restituiscono false, la terza true; Main restituisce Integer 3. È un esempio deterministico, non un server simulato: sostituire la condizione con lo stato reale desiderato.
Option Explicit On
Function Ready(ByRef checks As Integer, ByVal required As Integer) As Boolean
    checks += 1
    Return checks >= required
End Function

Sub Main()
    Dim checks As Integer = 0
    Const budget = 5000
    Wait Until Ready(checks, 3) Timeout budget
    Return checks
End Sub

Spiegazione dei parametri e dell’esecuzione:

checks parte da 0; Ready lo riceve ByRef e incrementa a ogni verifica. required=3 è ByVal e budget=5000 concede cinque secondi. Due verifiche restituiscono false, la terza true; Main restituisce Integer 3. È un esempio deterministico, non un server simulato: sostituire la condizione con lo stato reale desiderato.

2. Restituire Boolean da una propria funzione

# TryWait riceve ready=False e budget=0. Il test immediato fallisce con timeout. Catch problem restituisce False; Main restituisce 0, confrontabile con False. ready=True darebbe 1/True. La funzione cattura tutti gli errori: esaminare problem per distinguerli. ready è un valore Boolean, non un callback.
Option Explicit On
Function TryWait(ByVal ready As Boolean, ByVal budget As Integer) As Boolean
    Try
        Wait Until ready Timeout budget
        Return True
    Catch problem
        Return False
    End Try
End Function

Sub Main()
    Dim success = TryWait(False, 0)
    Return success
End Sub

Spiegazione dei parametri e dell’esecuzione:

TryWait riceve ready=False e budget=0. Il test immediato fallisce con timeout. Catch problem restituisce False; Main restituisce 0, confrontabile con False. ready=True darebbe 1/True. La funzione cattura tutti gli errori: esaminare problem per distinguerli. ready è un valore Boolean, non un callback.

3. Conservare l’errore e finalizzare

# CheckStatus con state=-1 genera subito "disconnected". Il limite di 3000 ms non sostituisce l’errore. Catch copia problem in message; Finally imposta finished=True/1. Main restituisce "disconnected:1". state=1 riuscirebbe subito, state=0 resterebbe false fino alla scadenza. Non serve una connessione al gioco.
Option Explicit On
Function CheckStatus(ByVal state As Integer) As Boolean
    If state < 0 Then
        Throw "disconnected"
    End If
    Return state = 1
End Function

Sub Main()
    Dim message = ""
    Dim finished = False
    Try
        Wait Until CheckStatus(-1) Timeout 3000
    Catch problem
        message = problem
    Finally
        finished = True
    End Try
    Return message & ":" & CStr(finished)
End Sub

Spiegazione dei parametri e dell’esecuzione:

CheckStatus con state=-1 genera subito "disconnected". Il limite di 3000 ms non sostituisce l’errore. Catch copia problem in message; Finally imposta finished=True/1. Main restituisce "disconnected:1". state=1 riuscirebbe subito, state=0 resterebbe false fino alla scadenza. Non serve una connessione al gioco.


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic