Barre de progression, interruption

ChachaChacha Membre
22:54 modifié dans API AppKit #1
Bonjour,

Comme d'hab en ce moment, j'ai une question de méthodologie. J'ai l'impression de me compliquer la vie, et il y a peut-être plus simple que ce que je fais.
Voilà  : dans mon application, quand je lance un calcul, une sheet s'affiche avec une barre de progression. En cas de calcul trop long, il me paraà®t essentiel de pouvoir interrompre le calcul. J'ai donc fait ainsi:
  -le calcul est lancé dans un thread créé pour l'occasion
  -dans le thread principal, quand je crée le thread de calcul, j'affiche aussi une sheet modale avec la barre de progression et le bouton "Abort"
  -un click sur le bouton abort met à  YES une variable "mustAbort"
  -le thread de calcul vérifie régulièrement la valeur de mustAbort, et s'interrompt proprement si elle passe à  YES (je précise que j'utilise bien des @synchronized() pour vérifier ma variable mustAbort)
  -avant de s'interrompre, le thread déclenche la fermeture de la sheet modale de progression.

Qu'en pensez-vous ? N'ya-t-il pas plus simple ?

+
Chacha

Réponses

  • maconnectmaconnect Membre
    22:54 modifié #2
    je dirais que c'est exactement comme cela que je ferais. Pour moi, c'est la bonne façon
  • Eddy58Eddy58 Membre
    février 2005 modifié #3
    Bon je ne sais pas comment est fait on appli, mais personnellement je me serais débrouillé pour trouver un espace dans la fenêtre principale pour mettre le progress indicator et le bouton Abort, afin d'éviter l'ouverture d'une sheet. Car normalement, si tu lances ton calcul dans un autre thread, le but recherché n'est-il pas de pouvoir continuer à  faire d'autres choses dans ton appli ? :)
  • ChachaChacha Membre
    22:54 modifié #4
    Je ne lance pas le calcul dans un thread pour autoriser l'utilisateur à  faire quelque chose pendant ce temps, mais pour permettre à  la RunLoop globale d'inspecter les clicks sur mon bouton "abort". Sinon mon calcul serait atomique.
  • Eddy58Eddy58 Membre
    22:54 modifié #5
    Ok...effectivement dans ce cas il est peut-être plus simple de faire une modal sheet. Ca évite de mettre en mode disabled les éléments d'interface si le progress indicator et le bouton Abort auraient été dans la fenêtre principale. :)
Connectez-vous ou Inscrivez-vous pour répondre.