Recherche asynchrone
L’objet Device Finder active les recherches synchrones et asynchrones. Les recherches asynchrones retournent immédiatement le contrôle à l’application appelante. Ensuite, l’application est informée de chaque appareil individuel tel qu’il est trouvé, à l’aide d’une interface de rappel que l’application a inscrite.
La recherche asynchrone est idéale pour les interfaces utilisateur graphiques et les applications qui effectuent une surveillance continue.
La structure générale d’une recherche asynchrone est la suivante :
- Créer un objet de recherche
- Démarrer la recherche
- Recevez des notifications de rappel et effectuez les étapes de traitement appropriées.
- Lorsque la recherche n’est plus nécessaire, annulez la recherche et libérez les objets associés.
Notes
Dans le code de rappel, une application ne peut pas libérer l’objet pour lequel elle reçoit une notification, comme un nouvel appareil, et l’application ne peut pas non plus annuler la recherche.
Exemple C++
Les applications C++ doivent implémenter un objet de rappel à passer à la recherche. Consultez Recherche asynchrone en C++ pour obtenir un exemple de code illustrant cette action.
Exemple VBScript
Le code VBScript doit passer l’adresse de la fonction de rappel.
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