OUTLOOKオブジェクト解放


tomisan  2011-03-19 21:11:22  No: 102821  IP: [192.*.*.*]

こんにちわ。tomisanといいます。

VB初心者なのですが、VB2008でOUTLOOKを使用して、メールの作成、下書き保存の処理を考えています。
処理はうまくいったのですが、タスクマネージャーからOutlook.exeの解放ができません。よろしくお願いします。



'OUTLOOKオブジェクト
Dim objOutlook As Object
Dim objNamespace As Object
Dim objFolder As Object
Dim objMAil As Object

'OUTLOOL操作用オブジェクト
objOutlook = CreateObject("Outlook.Application")
objNamespace = objOutlook.GetNamespace("MAPI")

'デフォルトのフォルダを表示(OUTLOOK起動用)
objFolder = objNamespace.GetDefaultFolder(6)

'メールアイテムの作成
objMAil = objOutlook.CreateItem(0)

objMAil.To = ToMale
objMAil.CC = ToMaleCC
objMAil.Subject = Kenmei



objMAil.Body =  Body




objMAil.Save()   '保存、下書きへ 
objMAil.Close(2) 'メール作成終了

'オブジェクト解放

Marshal.ReleaseComObject(objMAil)
Marshal.ReleaseComObject(objFolder)
Marshal.ReleaseComObject(objNamespace)

objOutlook.Quit()
Marshal.ReleaseComObject(objOutlook)

objMAil = Nothing
objFolder = Nothing
objNamespace = Nothing
objOutlook = Nothing

編集 削除
魔界の仮面弁士  2011-03-20 00:29:41  No: 102822  IP: [192.*.*.*]

ここは VB2-VB6専用の掲示板です。
VB2008 は隣の掲示板をご利用ください。

> タスクマネージャーからOutlook.exeの解放ができません。
当方環境では、最後の ReleaseComObject にて解放されました。
(Nothing 代入なし)

ただし、解放にはメッセージループを必要とするのか、
objOutlook.Quit()
Marshal.ReleaseComObject(objOutlook)
を実行した後で、VB 側のプロシージャを Return するなどして、
VB を Idle 状態にしないとタスクから消えませんでした。
(あるいは、AppDomain がアンロードされた場合にもタスクから消えましたが)

編集 削除