Se ho ben capito CallSubDelayed chioama una sub solo alla fine della rutine che la contiene. Ma non si puo chiamare direttamente la Sub alla fine del codice?
A che serve esattamente CallSubdelayed?
Che differenza c'è fra Test1 e Test2?
B4X:
Sub Test1
CallSubDelayed(Me,"MiaSub")
Log(1)
Log(2)
End Sub
Sub Test2
Log(1)
Log(2)
MiaSub
End Sub
Sub MiaSub
Log("Faccio qualcosa")
End Sub
Chiama quando tutte le operazioni in coda sono complete, non solo quelle dell'applicazione. Ad esmpio il Refresh delle viste (UI) da parte del sistema operativo, funzioni in attesa.
Questo è usato quando ti accorgi che una CallSub non viene eseguita e i log ti segnala che è stata soppressa.
Se ho ben capito CallSubDelayed chioama una sub solo alla fine della rutine che la contiene. Ma non si puo chiamare direttamente la Sub alla fine del codice?
A che serve esattamente CallSubdelayed?
Che differenza c'è fra Test1 e Test2?
B4X:
Sub Test1
CallSubDelayed(Me,"MiaSub")
Log(1)
Log(2)
End Sub
Sub Test2
Log(1)
Log(2)
MiaSub
End Sub
Sub MiaSub
Log("Faccio qualcosa")
End Sub
La differenza c'è, anche se nell'esempio che hai fatto tu non si nota dai log.
Su Test1 verrà chiamata MiaSub dopo l'istruzione End Sub, mentre su Test2 viene chiamata MiaSub prima dell'istruzione End Sub
Magari detta così può sembrare la stessa cosa, ma non lo è, soprattutto tra routine che si chiamano una con l'altra, oppure con una chiamata ricorsiva che non vuoi avere problemi con lo stack