【发布时间】:2014-02-14 10:17:30
【问题描述】:
我正在使用 VSTO 编写 Outlook 插件。每当我需要释放 COM 对象时,我都会这样做:
MailItem email = inbox.Items[1];
// Do something
Marshal.ReleaseComObject(email);
但是,如果我有很多 COM 对象,这将成为很多工作。我在下面有两个代码 sn-ps。下面的代码 sn-ps 中的一个或两个是否会正确释放 COM 对象?
1
public class Demo
{
public void Main()
{
// Assume inbox exists.
MailItem email = inbox.Items[1];
// Do something
Release(email);
}
public void Release(object obj)
{
Marshal.ReleaseComObject(obj);
}
}
2
List<object> list = new List<object>();
MailItem email = inbox.Items[1];
list.add(email);
// Do something
foreach (object obj in list)
Marshal.ReleaseComObject(obj);
【问题讨论】: