[Ruby] WIN32OLE_EVENTとダメダメな私
最近、めっきりWin32OLEやRubyのことを深く考えなくなっている。 Linuxのソフトをインストールしたりすることも無くなって どうにも不精になったというかチャレンジ精神が無くなったというか 守りの姿勢に入ってしまっているというか、 なんかダメダメである。
多分、英語100万語に気を取られているのも1つの要因だ。
そんな今日この頃なので、[ruby-talk:264885]の件も どうしてそういうことになってしまっているのか すぐには思い出せないのである。
確かややこしい込み入った事情があって、 [ruby-dev:27133]の問題を避けるための 苦肉の策だったことだけはかすかに覚えている。
WIN32OLE_EVENTオブジェクトが消えるときには IConnectionPointのUnadviseを実行するようになっていて、 WIN32OLE_EVENTオブジェクトはfreeされる。
COMサーバー側は、Unadviseを受けてEVENTSINK_Releaseを 呼び出すんだけど、そのときには、肝心のWIN32OLE_EVENTオブジェクトが freeされてしまっていてEVENTSINK_Releaseが呼ばれるときに Segmentation faultが発生する。
...というようなことだったような...。
で、結局、WIN32OLE_EVENTオブジェクトがうっかりfreeされないように GlobalなArrayにWIN32OLE_EVENTオブジェクトを追加しておくという 姑息な手段で逃げた。
...というような気がする...。
上手い方法がきっとあるに違いないと思ってはいるのだが、 その方法を思いつかないまま、 いつの間にか忘れてしまっていたのだった。
| 固定リンク
この記事へのコメントは終了しました。
コメント