続・nsIHttpChannel.asyncOpenが動かないの続き。
nsIHttpChannel.asyncOpenおよび
nsIStreamListenerがらみのソースを追っていったところ、
どうやらNS_ProcessNextEventなる関数が怪しいことがわかった。
この関数は現在のスレッドに対して
nsIThread.processNextEvent(PR_False)を呼び出す。
こうすることで現在のスレッドにたまっているGeckoイベントを処理することができるわけだ。
こいつを呼び出す処理をたとえばDelphiならApplication.OnIdleに追加すればいい。
が、Gecko1.8まではそんなことをせずともイベントを処理できていたので改悪に見えなくもない。 せっかくのイベント駆動型のOSを使っているのに こんな余計な処理を埋め込みたくないというのが正直な感想だ。 一応Gecko1.9でもSimpleDownload他を動かせる目処が立ったので、 とりあえずそれはよしとする。
まさかnsIWebBrowserのリスナーでも必要だとか言うことはないだろうな。
追伸。Bagelの人へ。 コメント書き込めます。 MovableTypeアップデート時に設定ミスって申し訳なかった。

コメントする