WaitFor e
Sleep(0) non sono proprio facili da usare, poichè non mettono il programma in attesa (come ci si aspetterebbe) ma eseguono un "return" alla funzione chiamata e poi rientrano in azione esattamente dalla riga successiva quando la condizione è avvenuta.
Molto pericoloso quindi usarli sul
Activity_Create e in più routine contemporaneamente (come hai fatto tu).
Vediamo se riesco a farmi capire:
Quando
Activity_Create parte,
FirstTime è
true, e quindi viene chiamata
OperazioniIniziali.
Su
OperazioniIniziali viene eseguito un
WaitFor, ma come ti ho già detto non mette in attesa l'esecuzione, ma esegue un
return, e quindi il controllo ritorna a
Activity_Create, che prosegue chiamando
GetTurnoGiornoAndShow che a sua volta chiama
RicavaTurnoDelGiorno (senza che il WaitFor abbia finito)
Come vedi il flow del programma è giusto come te lo trovi tu.
So che è brutto e non va fatto, ma in alcuni casi è ancora utile il deprecato
DoEvents (che quindi come hai capito in certi casi non può essere sostituito con
Sleep(0) proprio per questi problemi).
In alcuni punti dei miei programmi utiizzo ancora
DoWhile con il
DoEvents (con un timeout di sicurezza) per non mandare il tutto in blocco.
Stesso discorso per
MsgBox, che anche lui è deprecato e quindi sconsigliato, ma in alcune situazioni è ancora indispensabile.
Il debug passo-passo, con i Wait For, è praticamente impossibile. Si devono usare i Log.
Verissimo !!!!!!