Oggetto Request
[Microsoft Agent è deprecato a partire da Windows 7 e potrebbe non essere disponibile nelle versioni successive di Windows.]
Il server elabora alcuni metodi in modo asincrono. Ciò consente al codice dell'applicazione di continuare durante il completamento del metodo. Quando un'applicazione client chiama uno di questi metodi, il controllo crea e restituisce un oggetto Request per la richiesta. È possibile utilizzare l'oggetto Request per tenere traccia dello stato del metodo assegnando una variabile oggetto al metodo . In Visual Basic dichiarare prima una variabile oggetto:
Dim MyRequest as Object
In VBScript non si include il tipo di variabile nella dichiarazione:
Dim MyRequest
Usare l'istruzione Set di Visual Basic per assegnare la variabile alla chiamata al metodo:
Set MyRequest = <i>agent</i>.Characters("<i>CharacterID</i>").<i>method</i> (<i>parameter</i>[s])
In questo modo viene aggiunto un riferimento all'oggetto Request . L'oggetto Request verrà eliminato definitivamente quando non sono presenti altri riferimenti. Dove dichiari l'oggetto Request e il modo in cui lo usi determina la sua durata. Se l'oggetto viene dichiarato locale in una subroutine o una funzione, verrà eliminato definitivamente quando esce dall'ambito; ovvero quando termina la subroutine o la funzione. Se l'oggetto viene dichiarato a livello globale, non verrà eliminato definitivamente finché il programma termina o un nuovo valore (o un valore impostato su "vuoto") viene assegnato all'oggetto.
L'oggetto Request fornisce diverse proprietà su cui è possibile eseguire query. Ad esempio, la proprietà Status restituisce lo stato corrente della richiesta. È possibile usare questa proprietà per controllare lo stato della richiesta:
Dim MyRequest
Set MyRequest = Agent1.Characters.Load ("Genie", "https://agent.microsoft.com/characters/v2/genie/genie.acf")
If (MyRequest.Status = 2) then
'do something
Else If (MyRequest.Status = 0) then
'do something right away
End If
La proprietà Status restituisce lo stato di un oggetto Request come valore long integer.
Stato | Definizione |
---|---|
0 | Richiesta completata. |
1 | Richiesta non riuscita. |
2 | Richiesta in sospeso (nella coda, ma non completata). |
3 | Richiesta interrotta. |
4 | Richiesta in corso. |
L'oggetto Request include anche un valore long integer nella proprietà Number che restituisce l'errore o la causa del codice di stato . Se nessuno, questo valore è zero (0). La proprietà Description contiene un valore stringa che corrisponde al numero di errore. Se la stringa non esiste, description contiene "Errore definito dall'applicazione o definito dall'oggetto".
Per i valori e il significato restituiti dalla proprietà Number , vedere Codici di errore.
Il server inserisce le richieste di animazione nella coda del carattere specificato. In questo modo il server può riprodurre l'animazione su un thread separato e il codice dell'applicazione può continuare durante la riproduzione delle animazioni. Se si crea un riferimento all'oggetto Request , il server invia automaticamente una notifica all'avvio o al completamento di una richiesta di animazione tramite gli eventi RequestStart e RequestComplete . Poiché i metodi che restituiscono oggetti Request sono asincroni e potrebbero non essere completati durante l'ambito della funzione chiamante, dichiarare il riferimento all'oggetto Request a livello globale.
I metodi seguenti possono essere usati per restituire un oggetto Request : GestureAt, Get, Hide, Interrupt, Load, MoveTo, Play, Show, Speak e Wait.