Lorsque j'ai besoin d'effectuer une action longue, je l'appelle dans un BackgroundWorker comme celui-ci, afin de ne pas geler l'interface utilisateur;Utilisation de l'arrière-plan et mise à jour de l'interface utilisateur
BackgroundWorker bgWorker = new BackgroundWorker();
bgWorker.DoWork += (s, e) => {
//Do something long lasting
for(int i = 0; i < x; i++){
//Performing action i of x
//While doing so update the progressbar
prgBar.Dispatcher.Invoke(() =>{
prgBar.Value += ((i/x) * 100.0);
});
}
};
bgWorker.RunWorkerCompleted += (s, e) => {
//Finish up things
};
bgWorker.RunWorkerAsync();
Est-ce «le chemin à parcourir» pour mettre à jour l'interface utilisateur ou est-ce «pas fait»? La même question s'applique à BackgroundWorker (peut-être commencer un nouveau thread au lieu d'un BackgroundWorker?)
Je voulais juste noter que si vous souhaitez mettre à jour l'interface utilisateur sans gel à cause d'une tâche de fond, de la manière habituelle est de nos jours l'async-await méthode. –