Pesquisa assíncrona
O objeto Device Finder habilita pesquisas síncronas e assíncronas. Pesquisas assíncronas retornam o controle ao aplicativo de chamada imediatamente. Em seguida, o aplicativo é notificado sobre cada dispositivo individual como ele é encontrado, usando uma interface de retorno de chamada que o aplicativo registrou.
A pesquisa assíncrona é melhor para interfaces gráficas do usuário e aplicativos que executam monitoramento contínuo.
A estrutura geral de uma pesquisa assíncrona é:
- Criar um objeto de pesquisa
- Iniciar a pesquisa
- Receba notificações de retorno de chamada e execute as etapas de processamento apropriadas.
- Quando a pesquisa não for mais necessária, cancele a pesquisa e libere os objetos associados.
Observação
No código de retorno de chamada, um aplicativo não pode liberar o objeto sobre o qual está recebendo notificação, como um novo dispositivo, nem o aplicativo pode cancelar a pesquisa.
Exemplo de C++
Os aplicativos C++ devem implementar um objeto de retorno de chamada para passar para a pesquisa. Consulte Pesquisar de forma assíncrona no C++ para obter um código de exemplo que ilustra essa ação.
Exemplo de VBScript
O código VBScript deve passar o endereço da função de retorno de chamada.
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