COMの解放処理について
COMの解放処理に関してです。
通常.NETのフレームワークからCOMを呼び出した場合は、System.Runtime.InteropServices.Marshal.ReleaseComObjectを使用してCOMオブジェクトの参照カウントを減らし、解放処理を行なっていたかと思います。
しかし、SilverlightになるとSystem.Runtime.InteropServices.Marshal.ReleaseComObjectメソッドは存在しません。どうすればいいかというと、下記の通りになります。
例)Wordを起動する。
//AutomationFactoryを使用して、ワードオブジェクトを生成
dynamic word = AutomationFactory.CreateObject("Word.Application");
//画面を表示
word.Visible = true;
//終了メソッドの呼び出し
word .Quit();
//Disposeメソッドの呼び出し。(ここがミソ。wordはIDisposableを実装しているので)
((IDisposable)word ).Dispose();
//nullを指定
word = null;
これでSilverlightからも安全にCOMのオブジェクトを解放することが可能です。