Ricerca asincrona
L'oggetto Device Finder consente sia ricerche sincrone che asincrone. Le ricerche asincrone restituiscono immediatamente il controllo all'applicazione chiamante. L'applicazione riceve quindi una notifica su ogni singolo dispositivo, mentre viene trovata, usando un'interfaccia di callback registrata dall'applicazione.
La ricerca asincrona è migliore per le interfacce utente grafiche e le applicazioni che eseguono il monitoraggio continuo.
La struttura generale di una ricerca asincrona è:
- Creare un oggetto di ricerca
- Avviare la ricerca
- Ricevere notifiche di callback e seguire i passaggi di elaborazione appropriati.
- Quando la ricerca non è più necessaria, annullare la ricerca e rilasciare gli oggetti associati.
Nota
Nel codice di callback un'applicazione non può rilasciare l'oggetto che riceve una notifica, ad esempio un nuovo dispositivo, né può annullare la ricerca.
Esempio C++
Le applicazioni C++ devono implementare un oggetto callback per passare alla ricerca. Vedere Ricerca asincrona in C++ per codice di esempio che illustra questa azione.
Esempio VBScript
Il codice VBScript deve passare l'indirizzo della funzione di callback.
Sub DeviceFinderCallback (device, UDN, calltype)
select case calltype
Case 0
output = "Found: " & vbCrLf
output = output & "DisplayName: " & device.FriendlyName & vbCrLf
output = output & "Type: " & device.Type & vbCrLf
output = output & "UDN: " & device.UniqueDeviceName & vbCrLf
MsgBox output
Case 1
MsgBox "device removed: " & UDN
Case 2
MsgBox "search complete"
end select
End Sub
Dim devicefinder
Dim findData
Set devicefinder = CreateObject("UPnP.UPnPDeviceFinder")
Sub StartFind()
findData = devicefinder.CreateAsyncFind("upnp:rootdevice", 0, _
GetRef("DeviceFinderCallback"))
devicefinder.StartAsyncFind(findData)
End Sub
Sub StopFind()
deviceFinder.CancelAsyncFind(findData)
End Sub