salut à tous,

je voudrais implémenter ce mode de recherche dans un "annuaire" :

quand l'utilisateur change un critère de recherche :
-si un thread est lancé, on le détruit
-lance un nouveau thread avec les nouveaux critères de recherche
-n'attend pas la fin du thread

le thread consiste à envoyer une requete de sélection à une base de donnée mysql, à récupérer dans un vecteur tampon le résultat, et à afficher dans une TreeView.

ce qui me pose problème c'est la destruction du thread, j'utilise les threads de la Glibmm, avec une interface construit sur Gtkmm.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    //  vide le contenu de la TreeView
    //  récupère les critères de sélection
 
    // si un thread est déjà lancé
    if (!_M_job_thread_ptr)
    {
         // on le détruit, mais comment ??
        _M_job_thread_ptr = NULL;
    }
 
    // création du nouveau thread
     _M_job_thread_ptr = Glib::Thread::create(sigc::mem_fun(this, &recherche_client::store_thread), true);
 
    // continue l'éxécution
    _M_job_thread_ptr->yield(); // est-ce la bonne méthode ?
tel-quel, ce code fait planté l'application, sans utilisé un thread, le reste du code fonctionne mais "freeze" l'interface.

une idée ??