Ciao a tutti! Vi espongo un dubbio che mi assale da giorni, vorrei capire dove sbaglio/faccio confusione nel ragionamento, oppure, se corretto, vi chiedo lumi in merito XD
Come accennato qui, mi ritrovo a dover aggiornare un vecchio progetto, e mi sono documentato sui nuovi Msgbox2Async e Wait For, rispettivamente qui Async Dialogs e Resumable Subs.
Quindi, a farla breve, utilizzando un Msgbox2Async devo utilizzare la Wait For, la quale però ritorna alla sub chiamante, in attesa che l'utente interagisca col Msgbox2Async. Allora per evitare questo devo invocare la sub in questione come Wait For (Sub in questione). Ma a questo punto il problema si sposta un passo indietro, e così via. Faccio un esempio tramite codice, per essere più chiaro:
Vecchio codice:
Che, per quanto detto sopra, dovrei quindi modificare in:
Cioè il dubbio principale è: così facendo, andando a ritroso, devo mettere Wait For-Complete ovunque?
Gentilmente, illuminatemi XD
PS: il codice è splittato nelle varie funzioni 1,2,3 poichè ognuna di queste può essere richiamata autonomamente (senza le altre) anche altrove, e per evitare di duplicare codice e modifiche future, ho reso funzioni a sè stanti.
Come accennato qui, mi ritrovo a dover aggiornare un vecchio progetto, e mi sono documentato sui nuovi Msgbox2Async e Wait For, rispettivamente qui Async Dialogs e Resumable Subs.
Quindi, a farla breve, utilizzando un Msgbox2Async devo utilizzare la Wait For, la quale però ritorna alla sub chiamante, in attesa che l'utente interagisca col Msgbox2Async. Allora per evitare questo devo invocare la sub in questione come Wait For (Sub in questione). Ma a questo punto il problema si sposta un passo indietro, e così via. Faccio un esempio tramite codice, per essere più chiaro:
Vecchio codice:
B4X:
Sub Activity_Create (FirstTime As Boolean)
FunzioneStart
End Sub
Sub FunzioneStart
Funzione1
Funzione2
Dim res As Int= Msgbox2("Testo","Titolo","SÌ","","NO",Null)
If res = DialogResponse.POSITIVE Then
'...altro codice
End Sub
Sub Funzione1
Dim res As Int= Msgbox2("Testo","Titolo","SÌ","","NO",Null)
If res = DialogResponse.POSITIVE Then
'...altro codice
Funzione3
End Sub
Sub Funzione2
Dim res As Int= Msgbox2("Testo","Titolo","SÌ","","NO",Null)
If res = DialogResponse.POSITIVE Then
'...altro codice
End Sub
Sub Funzione3
Dim res As Int= Msgbox2("Testo","Titolo","SÌ","","NO",Null)
If res = DialogResponse.POSITIVE Then
'...altro codice
End Sub
Che, per quanto detto sopra, dovrei quindi modificare in:
B4X:
Sub Activity_Create (FirstTime As Boolean)
Wait For (FunzioneStart) Complete (Result As Object)
End Sub
Sub FunzioneStart As ResumableSub
Wait For (Funzione1) Complete (Result As Object)
Wait For (Funzione2) Complete (Result As Object)
Dim ro As Object = Msgbox2Async("Testo","Titolo","SÌ","","NO",Null,False)
Wait For (ro) Msgbox_Result (res As Int)
If res = DialogResponse.POSITIVE Then
'...altro codice
Return Null
End Sub
Sub Funzione1 As ResumableSub
Dim ro As Object = Msgbox2Async("Testo","Titolo","SÌ","","NO",Null,False)
Wait For (ro) Msgbox_Result (res As Int)
If res = DialogResponse.POSITIVE Then
'...altro codice
Wait For (Funzione3) Complete (Result As Object)
Return Null
End Sub
Sub Funzione2 As ResumableSub
Dim ro As Object = Msgbox2Async("Testo","Titolo","SÌ","","NO",Null,False)
Wait For (ro) Msgbox_Result (res As Int)
If res = DialogResponse.POSITIVE Then
'...altro codice
Return Null
End Sub
Sub Funzione3 As ResumableSub
Dim ro As Object = Msgbox2Async("Testo","Titolo","SÌ","","NO",Null,False)
Wait For (ro) Msgbox_Result (res As Int)
If res = DialogResponse.POSITIVE Then
'...altro codice
Return Null
End Sub
Cioè il dubbio principale è: così facendo, andando a ritroso, devo mettere Wait For-Complete ovunque?
Gentilmente, illuminatemi XD
PS: il codice è splittato nelle varie funzioni 1,2,3 poichè ognuna di queste può essere richiamata autonomamente (senza le altre) anche altrove, e per evitare di duplicare codice e modifiche future, ho reso funzioni a sè stanti.
Last edited: