Ten fragment kodu pochodzi z Stephen Cleary's blog i podaje przykład sposobu zgłaszania postępu podczas korzystania z Task.Run. Chciałbym wiedzieć, dlaczego nie ma problemów z wieloma wątkami przy aktualizacji interfejsu użytkownika, przez co rozumiem, dlaczego wywołanie nie jest wymagane?Aktualizacje zadań Task.Run i UI
private async void button2_Click(object sender, EventArgs e)
{
var progressHandler = new Progress<string>(value =>
{
label2.Text = value;
});
var progress = progressHandler as IProgress<string>;
await Task.Run(() =>
{
for (int i = 0; i != 100; ++i)
{
if (progress != null)
progress.Report("Stage " + i);
Thread.Sleep(100);
}
});
label2.Text = "Completed.";
}
@newbieguy powiązań, smyczkowe wywołuje metodę toString() automatycznie –