Sviluppatori B4X e altri linguaggi minori ....
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.
Sviluppatori B4X e altri linguaggi minori ....

Forum dedicato agli sviluppatori di B4X, PHP, Xamarin


Non sei connesso Connettiti o registrati

DoEvents obsoleto?

2 partecipanti

Andare in basso  Messaggio [Pagina 1 di 1]

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

Dust

Dust
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)

https://basic4x.forumattivo.com

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

mabotech

mabotech
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.

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

Dust

Dust
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.

https://basic4x.forumattivo.com

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

mabotech

mabotech
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.

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

Dust

Dust
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.

https://basic4x.forumattivo.com

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

mabotech

mabotech
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.

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

Dust

Dust
Admin
Admin

Thread.yield() sembra ci sia

https://basic4x.forumattivo.com

Contenuto sponsorizzato



Torna in alto  Messaggio [Pagina 1 di 1]

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