2011-10-22 8 views
5

Ho diversi file di grandi dimensioni che sto elaborando e sto utilizzando lo backgroundWorker1.ReportProgress(percent) per segnalare lo stato di avanzamento al termine di ogni file. Ma ora voglio avere una seconda barra di avanzamento per segnalare lo stato di avanzamento di ogni singolo file mentre viene elaborato (e ripristina il file successivo). Posso usare la posizione corrente del byte che sto leggendo e dividere per la dimensione totale del file per ottenere il progresso in percentuale. Ma come faccio a passare questo valore a progressBar2 se c'è un solo evento ProgressChanged?C# Backgroundworker segnala lo stato di avanzamento di 2 barre di avanzamento?

risposta

5

Un modo è utilizzare BackgroundWorker.ReportProgress(Int32, Object) e passare tutto ciò che si desidera, nel parametro userState.

Un altro è semplicemente sapere che quando hai raggiunto il 100% sulla prima barra di avanzamento devi incrementare l'altra barra.

3

ReportProgress ha uno overload che consente di passare un oggetto aggiuntivo. Puoi usare questo per restituire qualsiasi stato extra di cui hai bisogno.

public void ReportProgress(
    int percentProgress, 
    Object userState 
) 

È quindi possibile leggere lo stato da ProgressChangedEventArgs.UserState.

Problemi correlati