Capisco come possiamo passare una funzione variabile (progresspercentage) a "progresschanged", in questo modo.Come inviare più argomenti in C# backgroundworker è stato modificato l'evento
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
...
worker.ReportProgress(pc);
...
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
ma voglio passare più variabili a questa funzione, qualche cosa come:
worker.ReportProgress(pc,username,score);
. ..
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
this.currentUser.Value = e.UserName; //as string
this.score.Value = e.UserScore; //as int
}
scusa sono nuovo di C#, qualcuno potrebbe darmi un esempio.
sembra una buona idea, ma per qualche motivo non ho potuto ottenere ad esempio da 3 a lavorare (derivazione di una classe personalizzata da System.Tuple) utilizzando .NET Framework versione 4/MS Visual Studio 2010 Professional. La definizione di classe PcUsernameScore restituisce "errore CS1729: 'System.Tuple' non contiene un costruttore che accetta 0 argomenti", e la chiamata di ReportProgress worker restituisce "errore CS1729: 'myclass.PcUsernameScore 'non contiene un costruttore che accetta 3 argomenti ". Ma il tuo esempio 2 funziona correttamente. –
MarkU
@MarkU hai capito bene, ho aggiornato la risposta. – Bijan
potresti anche passare una classe personalizzata o una struct invece di una tupla – Eric