Modal sheet et multi-threading

FloFlo Membre
21:29 modifié dans API AppKit #1
Bonjour à  tous !

Je me pose une question, j'ai une fenêtre principale avec une outlineView qui accède à  une structure de données dans sa méthode reloaddata. Sur cette fenêtre je lance une "modal sheet" faisant tourner un "progress indicator".
Pendant ce temps un thread concurrent au thread principal traite la structure de données.

Ma question est la suivante, est-il possible que l'outlineView de la fenêtre principale fasse un reloadData sur la structure de données pendant que mon thread concurrent la traite alors qu'il y a une modal sheet qui tourne ?  :p

Réponses

  • FloFlo Membre
    21:29 modifié #2
    En d'autres termes, est-il possible qu'un événement quelconque déclenche le reloadData de l'outlineView de la fenêtre mère alors que cette dernière héberge une modal window ? :)
  • FloFlo Membre
    21:29 modifié #3
    Bon ben ça n'à  pas l'air de passionner les foules mon histoire  :)
  • ClicCoolClicCool Membre
    21:29 modifié #4
    dans 1258482838:

    Bon ben ça n'à  pas l'air de passionner les foules mon histoire  :)


    Si si, ça me passionne et le suspens est haletant même ;)

    Mais j'ai pas de réponse claire pour ma part, sauf qu'il me semble que c'est pas possible puisqu'on se retrouve dans un modal event loop qui monopolise le reste ?
  • FloFlo Membre
    21:29 modifié #5

    Si si, ça me passionne et le suspens est haletant même


    Ha me voilà  rassuré !  :)


    Mais j'ai pas de réponse claire pour ma part, sauf qu'il me semble que c'est pas possible puisqu'on se retrouve dans un modal event loop qui monopolise le reste ?


    Oui c'est ce que je pense aussi, je demandais juste confirmation pour éviter d'avoir à  mettre des mécanismes de synchronisation de processus inutiles qui alourdiraient les traitements de l'appli...
  • manu57manu57 Membre
    21:29 modifié #6
    Salut,

    Ben si c'est possible. Lorsque ton thread est prêt avec ses données, tu envoies:

    NSArray * modes = [[NSArray alloc] initWithObjects:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSModalPanelRunLoopMode, NSEventTrackingRunLoopMode, nil]; <br /><br />[myController performSelectorOnMainThread:@selector(reloadOutlineViewWithData:) withObject:myData waitUntilDone:NO modes:modes];<br /><br />
    


    depuis le code de ton Thread. Dans reloadOutlineViewWithData:(id)data  tu places tes données et tu lances un reloadData sur l'outline view.

    Si tu veux passer des reload incrementaux, ne réutilise pas l'objet passer en paramètre (myData) dans le thread sinon c'est le crash assuré.

    Manu

Connectez-vous ou Inscrivez-vous pour répondre.