异步搜索
Device Finder 对象支持同步和异步搜索。 异步搜索立即将控制权返回给调用应用程序。 然后,使用应用程序已注册的回调接口,在找到每个设备时通知应用程序。
异步搜索最适合图形用户界面和执行持续监视的应用程序。
异步搜索的一般结构为:
- 创建搜索对象
- 开始搜索
- 接收回调通知并执行相应的处理步骤。
- 不再需要搜索时,请取消搜索并释放关联的对象。
注意
在回调代码中,应用程序无法释放接收通知的对象(例如新设备),应用程序也无法取消搜索。
C++ 示例
C++ 应用程序必须实现要传递给搜索的回调对象。 有关演示此操作的示例代码,请参阅 在 C++ 中异步搜索 。
VBScript 示例
VBScript 代码必须传递回调函数的地址。
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