Questo frammento di codice è da Stephen Cleary's blog e fornisce un esempio di come segnalare il progresso quando si utilizza Task.Run. Mi piacerebbe sapere perché non ci sono problemi di cross thread con l'aggiornamento dell'interfaccia utente, con cui intendo perché non è richiesto il richiamo?Task.Run e interfaccia utente Progress Aggiornamenti
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.";
}
Le concatenazioni di stringhe @newbieguy chiamano automaticamente il metodo ToString() –