Una Sub che al suo interno contiene uno Sleep o un Wait For diventa automaticamente una Resumable Sub.
La particolarità di queste Sub è ad esempio che possono essere anche richiamate più volte contemporaneamente e ogni chiamata riceverà il suo risultato separatamente.
C'è un esempio dove una Resumable Sub viene usata per caricare delle immagini dal web.
La Sub viene chiamata 5 volte subito, e ad ogni chiamata viene indicata una diversa ImageView che dovrà ricevere il risultato.
Ogni ImageView riceverà la sua immagine.
E le 5 richieste lavorano tutte in comtemporanea in maniera asincrona, perchè ad esempio potrebbe apparire prima l'immagine dell'ultima richiesta (nel caso fosse stata molto piccola da scaricare).
Una cosa importante da ricordare di queste Sub è che per restituire un risultato con il Return bisogna usare il finale as ResumableSub.
Una sub normale sarebbe così
Private Sub Somma (x as Int, y as int) as Int 'Definiamo un Int come ritorno perchè sarà un numero
Return x+y
End Sub
Se fosse una Resumable Sub invece dovrebbe essere così
Private Sub Somma (x as Int, y as int) as ResumableSub 'Qualunque sia il dato di ritorno
Sleep(100)
Return x+y
End Sub
Una cosa a cui bisogna prestare attenzione è che quando utilizzi uno Sleep o un Wait For, il flusso del programma tornerà al punto dove è partita la chiamata e il programma proseguirà, se non è stato strutturato bene per effettuare l'attesa.
Quindi avremmo bisogno di vedere il tuo codice dove effettui la chiamata dove non c'è l'attesa che vorresti per capire dove è l'inghippo.