Gérer les tâches asynchrones dans les applications de style métro C # / XAML
Dans les applications de style métro C # / XAML, la gestion des opérations de longue durée de longue durée à l'aide de async
/ await
est cruciale pour prévenir les congélations d'interface utilisateur. Cependant, des situations surviennent lors de la pause et de la reprise de ces opérations en fonction de l'interaction des utilisateurs.
Utilisation de sémaphoreslimes pour une pause motivée par des événements
La classe SemaphoreSlim
offre une solution élégante pour la suspension basée sur les événements:
SemaphoreSlim
avec un nombre initial de 0 et un nombre maximal de 1: private SemaphoreSlim signal = new SemaphoreSlim(0, 1);
signal.Release();
GetResults
), attendez le signal du sémaphore: await signal.WaitAsync();
Utilisation de taskcompletionsource
Une autre approche efficace implique la classe TaskCompletionSource<bool>
:
TaskCompletionSource<bool>
: private TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();
tcs.SetResult(true);
await tcs.Task;
Avantages de la pause / curriculum vitae axée sur les événements
Ces méthodes évitent les inefficacités des sondages, éliminant l'attention occupée et les déchets de ressources. En utilisant des mécanismes axés sur les événements, vous obtenez une pause efficace et reprendre les fonctionnalités pour les tâches asynchrones de longue date.
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!