Sviluppatori Basic (e non) per Mobile e Desktop

Forum dedicato agli sviluppatori di B4X, Delphi, Xamarin


Non sei connesso Connettiti o registrati

DoEvents obsoleto?

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso  Messaggio [Pagina 1 di 1]

1 DoEvents obsoleto? il Mar Nov 14, 2017 9:24 pm

Dust

avatar
Admin
Admin
Nel B4X sembra che il DoEvents sia dichiarato Obsoleto.

Ovviamente in altri Basic non é obsoleto. Anzi é uno strumento utile per restituire il comando al Kernel che completi le funzioni in sospeso senza perdere il flusso dell'esecuzione ne andare in background.

Ma negli altri linguaggi esiste?

Delphi: Application.ProcessMessages
VB.NET: My.Application.DoEvents()
C#:  System.Windows.Forms.Application.DoEvents()
Java: Thread.yield() oppure EventQueue.invokeLater()
Swift: Thread.Sleep (100)

Vedi il profilo dell'utente http://basic4x.forumattivo.com

2 Re: DoEvents obsoleto? il Mer Nov 15, 2017 12:39 am

mabotech

avatar
Moderatore
Moderatore
A quanto ho capito, il DoEvents di B4A è una "invenzione" di *Dittatore*, non fa parte di Android.

Quello che consente è il refresh della UI, non l'esecuzione di eventuale codice in attesa di esecuzione.

Per questo ha creato lo Sleep.

Vedi il profilo dell'utente

3 Re: DoEvents obsoleto? il Mer Nov 15, 2017 6:35 am

Dust

avatar
Admin
Admin
E' vero ma esiste in tutti i linguaggi anche non Basic, é obsloleto per lui perché chissa come lo ha realizzato e non funziona bene adesso voleva rimediare inventandosi qualcos'altro che non risulta uguale.

Il DoEVent era per restituire il controllo al Kernel , lo sleep fa ritornare il flusso al livello superiore dell'App... e non mi pare la stessa cosa. In alcuni casi potrebbe funzionare..

Ma DoEvents non é obsoleto esiste in molti linguaggi, deve dire che lui non sa creare un comando simile senza incasinare il flusso e quindi se inventato una cosa nuova (e diversa) ..... ma solo perché non saprebbe come fare la vecchia.

Vedi il profilo dell'utente http://basic4x.forumattivo.com

4 Re: DoEvents obsoleto? il Mer Nov 15, 2017 8:20 am

mabotech

avatar
Moderatore
Moderatore
Ma questo perché nella stragrande maggioranza dei casi non è che lui inventi comandi, "gira", cioè, converte, diciamo, quelli di Android-Java in cui DoEvents non esiste.

Certo, in VB.Net e sicuramente negli altri linguaggi (probabilmente altre piattaforme, piuttosto che linguaggi) il DoEvents consente sia il refresh della UI, come con b4a, che il cedere il controllo al sistema operativo. Ad esempio, in un mio vecchissimo programma con lo stile finestrone che contiene altre finestre, mentre in una di queste finestre figlio avviene un lunghissimo calcolo, grazie al DoEvents posso continuare a lavorare su altre finestre della stessa applicazione. Questo con l'obsoleto DoEvents di b4a non si potrebbe fare; con lo Sleep? Boh.

Vedi il profilo dell'utente

5 Re: DoEvents obsoleto? il Mer Nov 15, 2017 9:03 am

Dust

avatar
Admin
Admin
In java esiste come vedi nella mia lista.

Il DoEvents cedendo il controllo al sistema operativo per eseguire le funzioni in sospeso a volte aggiorna la UI se ci sono operazioni sospese per la UI gestite dal sistema operativo. Ad esempio List e MessageBox nativi.

Vedi il profilo dell'utente http://basic4x.forumattivo.com

6 Re: DoEvents obsoleto? il Mer Nov 15, 2017 12:10 pm

mabotech

avatar
Moderatore
Moderatore
Dust ha scritto:In java esiste come vedi nella mia lista.

Il DoEvents cedendo il controllo al sistema operativo per eseguire le funzioni in sospeso a volte aggiorna la UI se ci sono operazioni sospese per la UI gestite dal sistema operativo. Ad esempio List e MessageBox nativi.

Non esiste in Android.

Vedi il profilo dell'utente

7 Re: DoEvents obsoleto? il Mer Nov 15, 2017 12:41 pm

Dust

avatar
Admin
Admin
Thread.yield() sembra ci sia

Vedi il profilo dell'utente http://basic4x.forumattivo.com

Contenuto sponsorizzato


Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto  Messaggio [Pagina 1 di 1]

Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum