Italian CallSubDelayed: utilità?

Sabotto

Well-Known Member
Licensed User
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
 

Star-Dust

Expert
Licensed User
Longtime User
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.

Thread 'Using CallSubDelayed to interact between activities and services' https://www.b4x.com/android/forum/t...teract-between-activities-and-services.18691/
 

sirjo66

Well-Known Member
Licensed User
Longtime User
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
 
Top