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.
tel-quel, ce code fait planté l'application, sans utilisé un thread, le reste du code fonctionne mais "freeze" l'interface.
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 ?
une idée ??
Partager