Interruzione temporanea del codice o limitare la priorità????

di il
5 risposte

Interruzione temporanea del codice o limitare la priorità????

Ho questo problema.
Quando eseguo un determinato codice che prevede l'elaborazione ciclica di un database con operazioni di lettura e scrittura, la CPU è talmente impegnata sull'elaborazione che le LABEL da me inserite per controllare l'evolversi delle operazioni, non hanno il tempo di aggiornarsi durante l'esecuzione.
Inoltre ho notato che spesso compare un messaggio tipico di quando un'app non risponde.

Pensavo alla possibilità di stoppare, anche solo per un secondo, l'esecuzione del codice, in modo da dare il tempo necessario alle LABEL di aggiornarsi.

Probabilmente non è questa la soluzione, forse esiste un modo per limitare in qualche modo le priorità per dare il tempo necessario, non saprei.

Chiedo consigli al forum per una soluzione al mio problema.

5 Risposte

  • Re: Interruzione temporanea del codice o limitare la priorità????

    Se parliamo di un ciclo pesante inserisci una

    DoEvents

    al suo interno, altrimenti mostra il codice e spiegati
  • Re: Interruzione temporanea del codice o limitare la priorità????

    Questo perche' fai il CLASSICO ERRORE di chi non sa programmare e non ha capito come si realizzano le interfacce utente.

    Nulla di strano se sei alle prime esperienze, ovviamente.

    In soldoni:
    NON SI ESEGUONO MAI OPERAZIONI COMPLESSE nel thread di aggiornamento dell'interfaccia utente, cosa che, ovviamente, stai facendo tu in questo momento.
    Nel thread di aggiornamento dell'interfaccia utente si possono eseguire SOLO OPERAZIONI che si concludono nell'arco di QUALCHE MILLISECONDO AL MASSIMO. Al LIMITE, ma proprio se non se ne puo' fare a meno, UN CENTINAIO DI MILLISECONDI (un DECIMO DI SECONDO), MA ASSOLUTAMENTE NON DI PIU

    Come si risolve?

    L'approccio richiede un DIVERSO MODO di programmare, basato sul concetto di esecuzione in un thread separato, e di aggiornamento dell'interfaccia utente mediante eventi

    La tua proposta, e', OVVIAMENTE, TOTALMENTE sbagliata!
    Il tuo approccio E' SOLO un'ACCROCCHIO che NON RISOLVE IL PROBLEMA DI FONDO.


    Consiglio: COMPRA un libro in cui si spiega come si realizzano le interfacce utente e STUDIA.
  • Re: Interruzione temporanea del codice o limitare la priorità????

    E comunque LupinI se continui con il

    crossposting

    su altri forum, qui non avrai altre risposte ... leggi il regolamento.
  • Re: Interruzione temporanea del codice o limitare la priorità????

    migliorabile ha scritto:


    ... nel thread di aggiornamento dell'interfaccia utente ...

    ... esecuzione in un thread separato ....
    VB6 è singlethread e non ha il supporto di più thread a meno di non scrivere ActiveX-Exe ... ma non lo consiglio.

    Basta un DoEvents che permetta alla message-pump di Windows di gestire il flusso del messaggi WM_PAINT
  • Re: Interruzione temporanea del codice o limitare la priorità????

    Concordo. L'aggiornamento dell'interfaccia non avviene se si è in un ciclo. Aggiungi dentro il ciclo
    Doevents
    Dopo aver aggiornato i campi della form e vedrai che funziona
Devi accedere o registrarti per scrivere nel forum
5 risposte