Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [c#] Form,progressbar,caricamento tabella db

    salve,
    ho un problema che non riesco a risolvere:
    codice:
    private void Form1_Load(object sender, EventArgs e) { 
       
       // imposto una progressbar di prova
       this.progressBarAvvio.Minimum = 0; 
       this.progressBarAvvio.Maximum = 100; 
       this.progressBarAvvio.Value = 50; 
       this.progressBarAvvio.Visible = true; 
       
       // TODO: questa riga di codice carica i dati nella tabella 'mioDataSet.Prodotti1'.      
       this.prodotti1TableAdapter.Fill(this.mioDataSet.Prodotti1);
       MessageBox.Show("Table prodotti1 caricata"); 
       
       // TODO: questa riga di codice carica i dati nella tabella 'mioDataSet.Prodotti2'.
       this.prodotti2TableAdapter.Fill(this.mioDataSet.Prodotti2);
       MessageBox.Show("Table prodotti2 caricata"); 
       
       // TODO: questa riga di codice carica i dati nella tabella 'mioDataSet.Prodotti3'.
       this.prodotti3TableAdapter.SelectCommandTimeout = 60000;
       this.prodotti3TableAdapter.FillByOwn(this.mioDataSet.Prodotti3); 
       MessageBox.Show("Table prodotti3 caricata"); 
    }
    PREMESSA: la tabella Prodotti3 contiene poco più di un milione di record.
    Ho provato a mettere una progressbar di prova per farla visualizzare prima del caricamento delle tabelle ma purtroppo il risultato che ottengo quando eseguo l'applicazione è questo:
    1. MessageBox.Show("Table prodotti1 caricata");
    2. MessageBox.Show("Table prodotti2 caricata");
    3. un attesa di circa 1 minuto...
    3. MessageBox.Show("Table prodotti3 caricata");
    4. la visualizzazione del Form con la progressbar;

    Domanda:
    Come faccio a far spuntare la progressbar prima del completamento del caricamento della form?
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Il caricamento della tabella avviene nel thread primario dell'applicazione, ed è lo stesso che gestisce anche i messaggi in arrivo (tra cui quelli legati al refresh dell'interfaccia grafica), motivo per cui il risultato delle modifiche apportate al controllo ProgressBar le vedrai solo a caricamento terminato.

    Ciò che puoi fare è forzare un aggiornamento del controllo grafico durante il caricamento (che deve essere graduale) oppure eseguire il caricamento in un thread separato (ad esempio, usando un BackgroundWorker).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    grazie per la risposta, a breve riprendo il problema magari usando un thread separato..
    Vi farò sapere l'esito della modifica.
    L'importante non è partecipare.. ma
    vincere!
    Errare Humanum EST, perseverare.. a OVEST!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da offlieman
    grazie per la risposta, a breve riprendo il problema magari usando un thread separato..
    Vi farò sapere l'esito della modifica.
    Se il problema è lo stesso oppure se è strettamente correlato, puoi anche continuare questa discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.