Condividi tramite


Ricerca asincrona

L'oggetto Device Finder consente sia ricerche sincrone che asincrone. Le ricerche asincrone restituiscono immediatamente il controllo all'applicazione chiamante. L'applicazione riceve quindi una notifica su ogni singolo dispositivo, mentre viene trovata, usando un'interfaccia di callback registrata dall'applicazione.

La ricerca asincrona è migliore per le interfacce utente grafiche e le applicazioni che eseguono il monitoraggio continuo.

La struttura generale di una ricerca asincrona è:

  1. Creare un oggetto di ricerca
  2. Avviare la ricerca
  3. Ricevere notifiche di callback e seguire i passaggi di elaborazione appropriati.
  4. Quando la ricerca non è più necessaria, annullare la ricerca e rilasciare gli oggetti associati.

Nota

Nel codice di callback un'applicazione non può rilasciare l'oggetto che riceve una notifica, ad esempio un nuovo dispositivo, né può annullare la ricerca.

 

Esempio C++

Le applicazioni C++ devono implementare un oggetto callback per passare alla ricerca. Vedere Ricerca asincrona in C++ per codice di esempio che illustra questa azione.

Esempio VBScript

Il codice VBScript deve passare l'indirizzo della funzione di callback.

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