Rozumiem, jak możemy przekazać jedną zmienną (progresspercentage) do funkcji "progresschanged", tak jak to.Jak wysłać więcej argumentów w C# backgroundworker progresywnie zmieniono zdarzenie
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
...
worker.ReportProgress(pc);
...
private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
Ale chcę przekazać więcej zmiennych do tej funkcji, niektóre rzeczy takie jak:
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
}
Przepraszam Jestem nowy dla C#, czy ktoś mógłby dać mi przykład.
Wydaje się, że to dobry pomysł, ale z jakiegoś powodu nie mogłem uzyskać przykładu 3 do pracy (wywodzącego się z klasy niestandardowej z System.Tuple) przy użyciu .NET Framework wersja 4/MS Visual Studio 2010 Professional. Definicja klasy PcUsernameScore podaje "błąd CS1729:" System.Tuple "nie zawiera konstruktora, który przyjmuje 0 argumentów", , a wywołanie funkcji ReportProgress daje komunikat "error CS1729: 'myclass.PcUsernameScore "nie zawiera konstruktora, który pobiera 3 argumenty". Ale twój przykład 2 działa OK. –
MarkU
@MarkU masz rację, zaktualizowałem odpowiedź. – Bijan
można również przekazać niestandardową klasę lub strukturę zamiast krotki – Eric