Aller au contenu


Photo

DispatchWorkItem - annuler une tâche


  • Please log in to reply
6 réponses à ce sujet

#1 helio

helio

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 212 messages

Posté 19 juillet 2017 - 22:19

Bonsoir,

 

J'ai actuellement le code suivant dans une fonction de ma classe :

let task1 = DispatchWorkItem { self.object1.changeColor() }
let when1 = DispatchTime.now() + 1
DispatchQueue.main.asyncAfter(deadline: when1, execute: task1)

cependant je souhaiterais annuler cette tâche dans une autre fonction, en faisant 

task1.cancel()

Comment déclarer task1 pour l'utiliser dans toute la classe ?

 

Merci.



#2 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 19 juillet 2017 - 23:39

Comme d'habitude. Comme un let au niveau de la classe à la place du niveau de la méthode.

#3 helio

helio

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 212 messages

Posté 20 juillet 2017 - 07:44

Mais la déclaration c'est : 

init(qos: DispatchQoS = default, flags: DispatchWorkItemFlags = default, block: @escaping () -> Void) 

donc si je mets ceci au niveau de la classe :

let task1 = DispatchWorkItem()

ce n'est pas bon.



#4 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 20 juillet 2017 - 08:11

Pourquoi pas

var task1:DispatchWorkItem?

au niveau de la classe ?


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#5 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 20 juillet 2017 - 09:20

@helio - peut-être tu peux nous montrer un peu plus de ton code ? C'est difficile d'imaginer ce que t'as écrit / veux écrire



#6 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 20 juillet 2017 - 09:40

Ah je viens de me rendre compte de ce que tu parles.

 

C'est une lazy var qui te conviendra :

class MyClass
{
  …
  
  lazy var task: DispatchWorkItem =
  {
    let task = DispatchWorkItem(qos: .background, flags: .detached, block:
    {
      self.object1.changeColor()
    })
    
    return task
  }()
  
  …

Mais, si tu n'as pas besoin de modifier les paramètres par défaut comme qos et flags, c'est :

class MyClass
{
  …
  
  lazy var task: DispatchWorkItem =
  {
    let task = DispatchWorkItem
    {
      self.object1.changeColor()
    }
    
    return task
  }()
  
  …


#7 helio

helio

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 212 messages

Posté 20 juillet 2017 - 22:42

Merci ! ça marche.






0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)