Asynchrone Suche
Das Device Finder-Objekt ermöglicht synchrone und asynchrone Suchvorgänge. Asynchrone Suchvorgänge geben sofort die Steuerung an die aufrufende Anwendung zurück. Anschließend wird die Anwendung über jedes einzelne Gerät benachrichtigt, wie es gefunden wird, mithilfe einer Rückrufschnittstelle, die von der Anwendung registriert wurde.
Die asynchrone Suche eignet sich am besten für grafische Benutzeroberflächen und Anwendungen, die eine kontinuierliche Überwachung durchführen.
Die allgemeine Struktur einer asynchronen Suche lautet:
- Erstellen eines Suchobjekts
- Starten der Suche
- Erhalten Sie Rückrufbenachrichtigungen, und führen Sie die entsprechenden Verarbeitungsschritte aus.
- Wenn die Suche nicht mehr benötigt wird, brechen Sie die Suche ab, und lassen Sie die zugeordneten Objekte los.
Hinweis
Im Rückrufcode kann eine Anwendung das Objekt, über das sie Benachrichtigungen empfängt, z. B. ein neues Gerät, nicht freigeben, und die Anwendung kann die Suche auch nicht abbrechen.
C++-Beispiel
C++-Anwendungen müssen ein Rückrufobjekt implementieren, das an die Suche übergeben werden kann. Beispielcode, der diese Aktion veranschaulicht, finden Sie unter Asynchrone Suche in C++ .
VBScript-Beispiel
VBScript-Code muss die Adresse der Rückruffunktion übergeben.
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