Maison > développement back-end > C++ > Comment annuler correctement les tâches asynchrones dans Winrt?

Comment annuler correctement les tâches asynchrones dans Winrt?

Susan Sarandon
Libérer: 2025-01-26 12:41:11
original
220 Les gens l'ont consulté

How to Properly Cancel Asynchronous Tasks in WinRT?

La méthode correcte d'annulation de la tâche asynchrone de winrt

Dans Windows 8 WinRT, la tâche fournit un mécanisme pour effectuer des opérations asynchrones. Cependant, l'annulation de la tâche de traitement peut être délicate.

Considérez le code suivant:

Bien que la méthode
<code class="language-csharp">private async void TryTask()
{
    CancellationTokenSource source = new CancellationTokenSource();
    source.Token.Register(CancelNotification);
    source.CancelAfter(TimeSpan.FromSeconds(1));
    var task = Task<int>.Factory.StartNew(() => slowFunc(1, 2), source.Token);

    await task;

    if (task.IsCompleted)
    {
        MessageDialog md = new MessageDialog(task.Result.ToString());
        await md.ShowAsync();
    }
    else
    {
        MessageDialog md = new MessageDialog("Uncompleted");
        await md.ShowAsync();
    }
}

private int slowFunc(int a, int b)
{
    string someString = string.Empty;
    for (int i = 0; i < 1000000; i++)
    {
        someString += i.ToString();
    }
    return a + b;
}</code>
Copier après la connexion
soit appelée, la tâche est toujours en cours d'exécution et complète en arrière-plan. Afin d'arrêter complètement la tâche lors de l'annulation, veuillez suivre les critères suivants:

CancelNotification

Passez le canton de l'annulation:
    passer
  • à chaque support pour annuler la méthode d'annulation. Vérifiez régulièrement le annulation de l'annulation: CancellationToken Cette méthode doit être vérifiée régulièrement
  • .
  • Le code amélioré est le suivant: CancellationToken
Grâce à ces modifications, si la tâche est annulée pendant l'exécution, la tâche sera complètement annulée et provoquera des anomalies lors de l'attente.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal