Exécution de tâches en arrière-plan dans WPF avec rapport de progression et annulation
Dans une application WPF, l'exécution de tâches asynchrones est essentielle pour maintenir une interface utilisateur réactive tout en effectuant des opérations de longue durée . L'approche recommandée pour y parvenir avec la prise en charge des rapports de progression et de l'annulation consiste à utiliser le modèle asynchrone basé sur les tâches (TAP) et les mots-clés async/await.
Exigences :
- Bloquer le fil de discussion de l'interface utilisateur
- Fournir des rapports d'avancement
- Être annulable
- Support multithreading
Solution :
Avec .NET 4.5 (ou .NET 4.0 avec Microsoft.Bcl.Async), TAP et async/await offrent une solution pratique et structurée. Voici un exemple :
private async void Start(object sender, RoutedEventArgs e)
{
try
{
await Task.Run(() =>
{
int progress = 0;
while (true)
{
System.Threading.Thread.Sleep(1);
progress++;
Logger.Info(progress);
}
});
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Copier après la connexion
Avantages :
-
Flux de code séquentiel : Permet un code intuitif et facile à lire .
-
Gestion structurée des exceptions : La gestion des erreurs est encapsulé dans le bloc try/catch.
-
Prise en charge du multithreading : Les tâches peuvent être exécutées sur plusieurs threads, permettant la concurrence.
Ressources supplémentaires :
- [Comment exécuter une tâche en arrière-plan WPF tout en étant capable de fournir un rapport et autoriser l'annulation ?](stackoverflow.com/questions/6743198/how-to-execute-task-in-the-wpf-background-while-able-to-provide-report-and-a)
- [Async dans 4.5 : activation de la progression et de l'annulation dans Async API](msdn.microsoft.com/en-us/library/hh191443)
- [Async et Await](msdn.microsoft.com/en-us/library/dd997377)
- [ Asynchrone/Attente FAQ](msdn.microsoft.com/en-us/library/hh973923)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!