Quale?Ieri per la prima volta il DoEvents mi ha generato errore
Quale?Ieri per la prima volta il DoEvents mi ha generato errore
Allora non dare colpe al DoEvents, che magari non c'entra niente!Non ricordo, /QUOTE]
E io non ci credo !Togliendo DoEvents si è risolto
Public Sub SetSelectPanel(Index As Int)
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
delay(250)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
End Sub
private Sub delay(Tempo As Long)
Dim Limite As Long = DateTime.Now +Tempo
Do While DateTime.Now< Limite
DoEvents
Loop
End Sub
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
Dim Limite As Long = DateTime.Now + 250
Do While DateTime.Now< Limite
DoEvents
Loop
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
Me ne farò una ragioneE io non ci credo !
Succede lo stesso. Cosi funziona perfettamente:Non si vede il codice che seleziona il panel.
Comunque, prova a mettere delay(260) (lasciando il DoEvents, ovviamente, solo per vedere se anche così va in "crash"?).
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
Sleep(250)
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
Già fatto, il risultato è stato sostituire DoEvents con alcune righe di codice che comunque non replicavano esattamente la funzione iniziale. Dove ho potuto ho tolto DoEvents, dove serviva, come ad esempio per mostrare una gif che gira durante una elaborazione o una semplice progressbar, l'ho tenuto.DoEvents è solo deprecato - puoi tutt'ora usare DoEvents e nessuno ti vieta di non usarlo.
Secondo me Erel ha studiato la cosa bene prima di introdurre questi novità. Se non riesci a implementare il tuo codice attuale senza usare DoEvents, farlo presente nel forum in inglese e molto probabilmente Erel ti dirà cosa fare. Così cogli l'occasione di presentare le tue lamentele direttamente a Erel perché non credo che Erel legge questo thread visto che in italiano.
Io personalmente in questo momento non sto più programmando in B4A per cui non ti posso dare la risposta (e probabilmente siamo in tanti che ha bisogno di capire meglio).
DoEvents anche a me, sopra tutto all'inizio ha creato molti problemi, i generale se hai una sub con doevent chimata in enterpressed di un edittext schianta.Succede lo stesso. Cosi funziona perfettamente:
Sto supponendo che crasha perché richiamo la Sub contenente il delay ancora prima che i 250mills siano trascorsi e richiamo la funzione dove c'é un altro Delay con DoEvents quando ancora non si é consumato il precedente.B4X:PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip) PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
Pensa che pure cosi funziona bene:
B4X:PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip) Sleep(250) PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
Cmq fermiamoci qua che siamo OT
Mi sembra un ottima soluzione il CallSubDelay.. lo useròDoEvents anche a me, sopra tutto all'inizio ha creato molti problemi, i generale se hai una sub con doevent chimata in enterpressed di un edittext schianta.
DoEvents non va bene per creare ritardi, ma è ottimo per rinfrescare l'ui dove però non c'è un evento in cui probabilmente java prevede il refresh, come ad esempio negli eventi delle view.
Ho risolto con callsubdelayed.
Una volta capiti i limiti doevent va bene, diventa un problema se il nuovo motore aggiunge criticità a questa istruzione. La sensazione è che Erel stia cercando di levarla, ma non riesce a fornire uno strumento analogo.
Un altro limite di Doevent è che se fa il refresh, l'activity non riceve gli eventi da inpust esterni (touch, click ecc), in questo caso Sleep può essere utile, ma non è semplice in quanto oltre all'attesa sleep fa il return.
Ricapitolando, sleep può essere utile, ma non è la stessa cosa di di Doevent e nemmeno ci assomiglia.
Sub SetSelectPanel(Index As Int)
PanelPallino.SetLayoutAnimated(250,x2,15dip,30dip,20dip)
CallSubDelayed(Me,"SpostaPallino")
End Sub
Sub SpostaPallino
'
PanelPallino.SetLayoutAnimated(250,x3,0,50dip,50dip)
End Sub
Stranamente non c'è un Like di ErelIo ho ancora voglia di lamentarmi:
questa libreria mi sembra abbastanza interessante e più utile del Wait For: https://www.b4x.com/android/forum/threads/asynctask.84109/
Permette la programmazione asincrona con la Gestione dell'Ui senza scomodare la libreria Thread che é un pò complicata
Ca..o, allora devo stare attento.Hai visto se la colpa é dell'ISIS ? Perché spesso é colpa loro che io sappia Sabotaggio all'occidente fin dalle App