Utilisez l'objet BackgroundWorker. Vous pouvez informer l'utilisateur de la progression de l'opération en utilisant les événements ReportProgress et ProgressChanged.
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// .. stuff that takes long
backgroundWorker1.ReportProgress(10);
// .. stuff that takes long
backgroundWorker1.ReportProgress(20);
// .. stuff that takes long
backgroundWorker1.ReportProgress(100);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Done !
}
Démarrez votre tâche dans un sujet différent. Quelle interface utilisez-vous? WinForms ou WPF? – opewix
utiliser un arrière-plan pour faire des choses qui prend du temps sur un thread séparé afin que le thread UI ne se bloque pas. –