Ho una situazione (penso) classica: Voglio proseguire un codice solo se una delle routine chiamate sia effettivamente terminata
Nello specifico, scarico una pagina HTML da un sito e la memorizzo in una string 'CodiceHTML'
Solo dopo che tale string sia effettivamente valorizzata devo proseguire col programma.
Immagino ci voglia un 'Wait for' ma questo comando non riesco proprio a capirlo (facendo esaurire alcuni di voi in un altro post...qui).
Al momento ho risolto ritardando l'esecuzione delle istruzioni che seguono quella che mi restituisce 'CodiceHTML', con uno Sleep.
Però vorrei imparare perchè penso che questo mio ripiego sia uno po un accrocchio, funzionante, ma pur sempre un accrocchio.
Ecco il codice interessato
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
			
			Nello specifico, scarico una pagina HTML da un sito e la memorizzo in una string 'CodiceHTML'
Solo dopo che tale string sia effettivamente valorizzata devo proseguire col programma.
Immagino ci voglia un 'Wait for' ma questo comando non riesco proprio a capirlo (facendo esaurire alcuni di voi in un altro post...qui).
Al momento ho risolto ritardando l'esecuzione delle istruzioni che seguono quella che mi restituisce 'CodiceHTML', con uno Sleep.
Però vorrei imparare perchè penso che questo mio ripiego sia uno po un accrocchio, funzionante, ma pur sempre un accrocchio.
Ecco il codice interessato
			
				B4X:
			
		
		
		Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("Layout")
    Avvio
    
End Sub
Sub Avvio
    
    EstraePaginaHTML
    
    'Wait for JobDone (Job As HttpJob) 'così non funziona'
    Sleep(2000)        ' così funziona e mi ritrovo CodiceHTML non vuoto
    
    If CodiceHTML<>"" Then
        RipuliscoHTML
    Else
        Msgbox("Non sono riuscito a ricavare CodiceHTML!","")
        Return
    End If
    
    'continuo con alktre routine se sopra è andato tutto ok'
    
End Sub
Sub EstraePaginaHTML
    
    oHttpClient.Initialize("oHttpClient")      ' client http
    Dim oHTTPJob As HttpJob
    oHTTPJob.Initialize("oHTTPJob", Me)
    oHTTPJob.Download("https://www.estrazionedellotto.it/")
        
End Sub
Sub JobDone (Job As HttpJob)
 
    Log("Evento JobName = " & Job.JobName & ", Success = " & Job.Success)
    If Job.Success And Job.JobName= "oHTTPJob" Then
        CodiceHTML =Job.getstring
    Else
        Log("Error: " & Job.ErrorMessage)
        ToastMessageShow("Error: " & Job.ErrorMessage, True)
    End If
 
    Job.Release
    
End Sub 
				 
 
		 
 
		 
						
					 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		