Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    9

    [C#] BackGroundWorker e ProgressBar

    Ciao,
    in una piccola applicazione in C# utilizzo un BackGroundWorker per riempire una tabella SQLite a partire da un DataTable.
    Nel form principale ho una ProgressBar che non riesco a utilizzare.
    In rete ho trovato molti esempi sull'utilizzo di BGW e PB, ma tutti utilizzano il metodo reportProgress(i), dove i è l'indice di un ciclo for all'interno di DoWork.
    Il mio problema è che in DoWork ho solamente il codice

    codice:
    sqlDa.Update(dt);
    dove sqlDa è un SQLiteDataAdapter e dt è il DataTable sorgente.
    Non usando cicli for, come posso procedere?
    Ho provato con l'evento RowUpdated (di SQLiteDataAdapter), nel quale incremento il valore della ProgressBar, ma giustamente mi da l'errore

    Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'pb' da un thread diverso da quello da cui è stata eseguita la creazione.

    Grazie

  2. #2
    Benvenuto nel forum di HTML.it

    È possibile accedere ai controlli Windows Form dal thread della GUI. Per modificarli da un altro thread, è necessario utilizzare il metodo Control.Invoke.

    codice:
    this.Invoke(new MethodInvoker(delegate {
                //tuo codice
            }));
    Il codice inserito viene eseguito dal thread della GUI. E' possibile utilizzare un'altra sintassi (sintassi lambda) ma per ora prova questa soluzione: al momento non posso testare il codice fornito e quindi vado 'a memoria'.

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    9
    Ho risolto con un delegate come da te consigliato.

    Grazie!

  4. #4
    Originariamente inviato da 7snake7
    Ho risolto con un delegate come da te consigliato.

    Grazie!
    Prego, figurati

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 © 2024 vBulletin Solutions, Inc. All rights reserved.