Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    45

    [vb.net] anomalo funzionamento della progress bar

    dopo aver inserito la progress bar in un'applicazione perfettamente funzionante, in fase di rifiniture finali, succede questa cosa molto antipatica. premessa: l'applicazione legge un file di circa 400.000 righe e separa i pagamenti andati a buon fine da quelli scartati, crea due flussi in output, niente di particolare, quindi, ho messo la pb_1 giusto per renderla più elegante. il numero di records del file di input è noto perchè il file viene letto da una sub precedente e ho messo in condivisione il numero di records letti, quindi ho impostato correttamente la pb_1.minimum a 1, la pb_1.maximum pari al numero di record del file di input, e la pb1.value pari ogni volta al contatore che si incrementa man mano che il record viene letto. Risultato: la progress bar non avanza, si vede solo una piccola valorizzazione iniziale, il programma gira (vedo l'ampiezza dei files di output che aumenta), improvvisamente diventa completamente verde, in quel momento il programma finisce(correttamente, ovviamente). Ho provato a :
    mettere il me. davanti a pb_1,minimum,maximum e value
    usare l posto di .value il .performskip
    avevo messo la visualizzazione anche i statistiche su alcune textbox e label con e senza il .me davanti, poi le ho anche tolte(...magari vanno in conflitto), ma il risultato è sempre il solito: all'inizio un piccolissima visualizzazione, calma piatta,poi di colpo la progress bar si riempie immediatamente e il programma chiude regolarmente... che può essere ????. Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Hai controllato il valore di value man mano che lo assegnavi ...?

    Puoi mostrare il codice relativo alla barra ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    45
    come dicevo ...niente di particolare..... ti dò per certo che la lettura avanza correttamente (il pb1_value per intenderce, o la variabile lettipb), mentre la barra rimane ferma, e come giè detto vedo che l'ampiezza dei files creati in output aumenta, e alla fine è tutto ok


    ----------------------------------------------------
    Me.pb_1.Minimum = 1
    Me.pb_1.Maximum = numrecletti ' numero rec file 141, per l'esattezza 467521,
    lettipb = 0
    Do Until EOF(141)
    ilrecord = LineInput(141)
    lettipb = lettipb + 1
    pb_1.Value = lettipb
    elemdr = Split(ilrecord, ";")
    rapporto = elemdr(3) & "-" & elemdr(4) & "-" & elemdr(5)
    For indice = 0 To 1900
    If guida(indice) <> String.Empty Then
    elemento = Split(guida(indice), ";")
    If elemento(1) = rapporto Then
    contdrtrov = contdrtrov + 1
    segno = elemdr(14)
    lavoro = CStr(Mid(elemdr(13), 2, 15)) & "," & CStr(Mid((elemdr(13)), 16, 2))
    importo = CDbl(lavoro)
    If segno = "D" Then
    importo = importo * -1
    End If
    recordmov = elemdr(3) & elemdr(4) & ";" & elemdr(5) & ";" & elemdr(6) & ";" & importo & ";" & elemdr(16) & ";" & elemdr(17)
    scrivimov(recordmov, totmov)
    If datimov(indice) = String.Empty Then
    datimov(indice) = ";" & "mov_il:" & elemdr(6) & "/"
    Else
    datimov(indice) = datimov(indice) & elemdr(6) & "/"
    End If
    End If
    End If
    Next
    Loop


    ----------------------------------------------------------------------

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Subito dopo l'assegnazione del .value della barra, inserisci la riga

    Application.DoEvents()

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    45

    funziona

    GRANDE Oregon ....funziona

    se ho capito bene questa istruzione ho fatto una specie di "scodamento dei messaggi in coda", cioè le barrette di progressione della PB si sono create ma il windows, vuoi per la lentezza della macchina o per le troppe applicazioni presenti sul momento non è riuscito a caricarle sulla PB, allpra l'application.Doevents ha fatto una specie di forzatura per fare un riallineamento ....

    grazie per la preziosa collaborazione .....

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non e' proprio cosi' ... per farla breve, durante il ciclo che tiene impegnata la CPU, Windows non ha avuto il tempo di eseguire il refresh grafico della barra. La DoEvents da' modo a Windows di occuparsi di tale ridisegno prima di continuare nel codice.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.