3

Disons que je cours du code dans l'expédition asynchrone. .. est-il un moyen de terminer le thread qu'il crée avant qu'il se termine? comme lorsque l'utilisateur clique sur annulerSortie prématurée de dispatch_asycn, Grand Central Dispatch

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    //start doing something here.. break bofore it finishes? 


    dispatch_async(dispatch_get_main_queue(), ^{ 

    //main thread stuff.. 

    }); 



}); 
+0

duplication possible de [Files d'attente d'envoi: comment savoir si elles sont en cours d'exécution et comment les arrêter.] (Http://stackoverflow.com/questions/1550658/dispatch-queues-how-to-tell-if- theyre-running-and-comment-stop-them) –

+0

oh désolé à ce sujet. Bref, je devrais juste utiliser un drapeau. –

+1

Oui, définissez un indicateur pour demander l'annulation et demandez à votre opération asynchrone de vérifier l'état d'annulation aux points désignés où vous pouvez annuler l'opération en toute sécurité (en vous assurant d'effectuer le nettoyage nécessaire). –

Répondre

3

David a raison. GCD n'a pas de méthode d'annulation intégrée. C'est au client (vous).