非同步搜尋
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