解放処理が面倒

COMオブジェクトを使う場合、Marshal.ReleaseComObjectを呼びまくることになるのが苦痛です。
http://www.python.org/doc/2.5/whatsnew/pep-343.html#SECTION000910000000000000000
http://www.python.org/doc/2.5/lib/module-contextlib.html
このあたりを使うと多少は楽になりそーなんですがIronPython2.0では、まだwithは使えないのかしら。

@contextmanager
def foo(comobj):
    try:
        yield comobj
    finally:
        Marshal.ReleaseComObject(comobj)

with nested (foo(app), foo(wbs), foo(wb), foo(wss), foo(ws)) as (a, b, c, d, e):
    do_something()

使ったことがないので自信無いのですが、上記のように書けば、ブロックを抜けるタイミングで自動的にReleaseComObjectしてくれるんですよね?(^^;