Application hangs after thread execution
- From: Matt Bragano <maestro485 comcast net>
- To: gtkmm-list gnome org
- Subject: Application hangs after thread execution
- Date: Mon, 16 Apr 2007 18:10:16 -0400
I keep running into a situation where my program suddenly hangs after a
particular thread is done doing its job. Actually, it doesn't
technically "hang", it will actually respond to clicks and things, its
just that the application window itself freezes. For example, if I
click the in the vicinity of the "Quit" button, the program will exit
normally despite the fact that the entire window is grayed out as if it
has frozen.
Also, this behavior doesn't happen every time, but it does happen
frequently. I assume it has something to do with the thread updating
certain widgets, but I can't figure out why the behavior is so
inconsistent. Additionally, when I do not use a thread everything works
fine, but since the searching operation takes a while it isn't very
practical.
Any ideas?
The relevant code is fairly straightforward:
void fs::on_search_button_clicked() {
//this is a Gtk::ScrolledWindow
db_searcher::db_searcher *dbs = Gtk::manage(new db_searcher());
Glib::ustring search_string = search_entry.get_text();
notebook.append_page(*dbs, search_string);
Glib::Thread::create(sigc::bind(sigc::mem_fun(*this,
&fs::search_db),(dbs),(search_string)), false);
notebook.show_all();
}
void fs::search_db(db_searcher::db_searcher *dbs, Glib::ustring
search_string) {
progress_bar.set_text("Searching...");
sigc::slot<bool> timeout_slot = sigc::mem_fun(*this, &fs::on_timeout);
sigc::connection timeout_connection =
Glib::signal_timeout().connect(timeout_slot, 50);
//this is the reason I use a thread since the searching takes a while
dbs->search_db(search_string);
progress_bar.set_text("Done");
timeout_connection.disconnect();
notebook.show_all();
show_all_children();
}
Thanks,
Matt
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]