Italian Problema MsgboxAsync

GaNdAlF89

Active Member
Licensed User
Longtime User
Ciao a tutti! Mi ritrovo ad aggiornare un vecchio progetto, ed avendo sostituito i vecchi Msgbox con i nuovi MsgboxAsync, ho un comportamento strano: dopo aver invocato quest'ultimo, sul display mi compare il messaggio però l'esecuzione continua a prescindere. Credo di aver sbagliato la gestione della sincronia. Ecco la parte di codice in questione:

B4X:
Sub Activity_Create (FirstTime As Boolean)

    Set_App 'richiamo questa funzione, di cui sotto

    Set_Layout

    'altro codice
End Sub

Sub Set_App

If File.Exists("percorso","abc.de") = False Then 'Primo avvio
        
    Dim ro As Object = Msgbox2Async("File di avvio non trovato." & CRLF & "Utilizzare il fle di default?","File mancante","SÌ","","NO",Null,False)
    Wait For (ro) Msgbox_Result (res As Int)
    If res = DialogResponse.POSITIVE Then
        'ecc ecc

End Sub

Dopo l'esecuzione della riga con la Wait For, viene mostrato correttamente il messaggio sul display, ma l'esecuzione continua con la funzione Set_Layout (come se si interrompesse l'esecuzione di Set_App e continua con la funzione successiva presente nell'Activity_Create).
Potete dirmi dove sbaglio? Grazie mille
 

udg

Expert
Licensed User
Longtime User
Questo avviene perché Set_App non è di tipo ResumableSub e non viene chiamata tramite WaitFor.
Però un WaitFor-Complete in Create non è neanche una buona idea. Quindi sarebbe meglio che la sub Create terminasse chiamando una normale sub (es. MioStart), la quale utilizzi in sequenza il WaitFor su SetAPP e poi il SetLayout (che comunque potrebbe essere anche la conclusionen di SetApp setssa).
 

GaNdAlF89

Active Member
Licensed User
Longtime User
Questo avviene perché Set_App non è di tipo ResumableSub e non viene chiamata tramite WaitFor.
Però un WaitFor-Complete in Create non è neanche una buona idea. Quindi sarebbe meglio che la sub Create terminasse chiamando una normale sub (es. MioStart), la quale utilizzi in sequenza il WaitFor su SetAPP e poi il SetLayout (che comunque potrebbe essere anche la conclusionen di SetApp setssa).
Grazie mille per la spiegazione, ho inquadrato il problema.
Il fatto è che si tratta di un grosso e vecchio progetto e ci sono centinaia e centinaia di Wait For Msgbox_Result, risulta molto stressante modificare il tutto, uno per uno...
 

Star-Dust

Expert
Licensed User
Longtime User
Grazie mille per la spiegazione, ho inquadrato il problema.
Il fatto è che si tratta di un grosso e vecchio progetto e ci sono centinaia e centinaia di Wait For Msgbox_Result, risulta molto stressante modificare il tutto, uno per uno...
io lascerei i MsgBox modali
 

Star-Dust

Expert
Licensed User
Longtime User
Per la legge sulla semplificazione, se una cosa funziona non si ripara
 

LucaMs

Expert
Licensed User
Longtime User
I MsgBox potrebbero bloccare l'app solo nel caso in cui l'utente metta in pausa (per un bel po' di tempo) l'app con uno di questi "attivo", visualizzato.

Per nuovi progetti potresti usare quelli asincroni, ma mettersi a sostituire decine di essi in un grosso progetto non vale la pena.
 
Top