2010-12-26 5 views
1

Ich muss mehrere Verzeichnisse für Änderungen überwachen. Ich verwende Gtk::Main, rufe Gio::Init an und füge Verzeichnismonitore genau so hinzu, wie es in der Dokumentation vorgeschlagen wird. Der Rückruf wird jedoch nie für ein beliebiges Verzeichnis aufgerufen. Brauche ich eine andere Schleife nur für die Monitore, und wenn ja, wie würde ich sie in Verbindung mit Gtk::Main verwenden?gtkmm Anwendung mit Gio-Datei überwacht

+0

Befolgen Sie einen Beispielcode? Siehe hier: http://svn.gnome.org/viewvc/gtkmm-documentation/trunk/examples/book/giomm/monitor_directory/monitor_directory.cc?revision=83&view=markup – Mark

+0

Ja, ich folge diesem Beispiel. Die Sache ist, wie verwende ich 'Gtk :: Main' und' Glib :: MainLoop' gleichzeitig? Anscheinend benötigt Gio's FileMonitor 'Glib :: MainLoop'. Ich habe sogar einen separaten Thread ausprobiert, aber das hat nicht geklappt. – dav

Antwort

1

Ich hatte das gleiche Problem in Vala und hier ist die komplette Lösung.

Wie Andrea Azzarone darauf hingewiesen hat, können Sie die Gtk::Main Schleife verwenden.

Achten Sie jedoch auf Ihre Gio::FileMonitor Referenz. Am Ende der Funktion ist es zerstört, so dass der Callback nicht aufgerufen wird, wenn Sie keinen Bezug auf das Objekt Gio::FileMonitor halten.

Ich fand diese Idee in this answer.

1

Sie können nur Gtk :: Main-Schleife verwenden, weil es ein Glib :: MainLoop ist.