From: Kazuhiro N. <zn...@mb...> - 2006-07-07 16:14:01
|
西山和広です。 >>> Fri, 7 Jul 2006 01:19:33 +0900 の刻に >>> mu...@hi...(Masao Mutoh) 氏曰く > > 最新のRuby-GNOME2ですと、他のスレッドでGtk::Dialog#runやGtk.mainを呼び出すと > 以下のようなwarningが出ます。 > 一応はresponseは-5や-6が返るようです。 > > test.rb: line 2 > GLib-WARNING **:g_main_context_prepare(): main loop already active in another thread > > 現状では、複数のスレッドで上記メソッドを動作させることは推奨できません。 > というより上記メソッドはメインスレッドで動作させるのが一番安全です。 なるほど。 結局、Gtk::Dialog#runをメインスレッドで呼び出した後、 別の処理を別スレッドで実行するようにして、メインスレッドでは begin thread = yield if thread while thread.alive? Thread.pass while Gtk.events_pending? Gtk.main_iteration end end thread.join end rescue Exception p $! puts $!.backtrace message = $!.message if $!.is_a?(SystemCallError) message = GLib.locale_to_utf8(message) end set_status(message) end という感じにしてみました。 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) |