Questo è uno dei miei primi risultati di ricerca e ancora nessun esempio per il progresso in Task Parallel Library
proprio qui ...
Oggi mi sono imbattuto in TPL perché voglio sviluppare nuove applicazioni multithread ma senza usare BackgroundWorker
(perché io leggere da qualche parte sull'attività con un buon codice prima)
Compilare l'esempio da @Stephen Risposta Cleary, il suo collegamento abbastanza complicato per cercare progresso e alcuni altri siti web.
Questo è l'esempio molto semplice di come fare Progress e Completato con thread UI modo sicuro:
TaskScheduler currentTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task<string>.Factory.StartNew(() =>
{
// loop for about 10s with 10ms step
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(10);
Task.Factory.StartNew(() =>
{
// this is a task created each time you want to update to the UI thread.
this.Text = i.ToString();
}, CancellationToken.None, TaskCreationOptions.None, currentTaskScheduler);
}
return "Finished!";
})
.ContinueWith(t =>
{
// this is a new task will be run after the main task complete!
this.Text += " " + t.Result;
}, currentTaskScheduler);
Il codice verrà visualizzato 1 a 1000 entro 10s e poi aggiungere un "Finish! " stringa nella barra del titolo di Windows. È possibile notare che TaskScheduler è il modo complicato per creare un aggiornamento sicuro dei thread dell'interfaccia utente poiché ritengo che l'attività pianificata venga eseguita sul thread principale.
qualsiasi soluzione finale con codice sorgente completo? – Kiquenet