[Ruby] Thread#initialize の再定義(その4)
class Thread alias :org_initialize :initialize def initialize(*arg, &block) org_initialize(*arg) { puts "OleInitialize" begin block.call(*arg) ensure puts "OleUnitialize" end } end end
で大体良さそうな感じだけど、これを C レベルで実装するのってどうすればいい?
とりあえず、C レベルで WIN32OLE.ole_initialize と WIN32OLE.ole_uninitialize を用意しておいて
Ruby レベルで
class Thread alias :org_initialize :initialize def initialize(*arg, &block) org_initialize(*arg) { WIN32OLE.ole_initialize begin block.call(*arg) ensure WIN32OLE.ole_uninitialize end } end end
として試してみてから、Cの実装は(やるかどうかも含めて)考えよう。
| 固定リンク
この記事へのコメントは終了しました。
コメント