-
Notifications
You must be signed in to change notification settings - Fork 0
API Basic WaitUntil it
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.
Wait Until condition Timeout milliseconds
-
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.
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.
- 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.
# 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 SubSpiegazione 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.
# 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 SubSpiegazione 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.
# 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 SubSpiegazione 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.
ClassicUO - Bad Newbie & Basic IDE Edition