我知道这里有人问过类似的问题,但我觉得我没有正确理解。
例如,我有以下代码:
Microsoft.Office.Interop.Outlook.Explorer expl = myOutlooApplication.ActiveExplorer();
if (expl.Selection.Count > 0)
{
object selObject = expl.Selection[1];
if (selObject is Microsoft.Office.Interop.Outlook.MailItem)
{
mailItem = (selObject as Microsoft.Office.Interop.Outlook.MailItem);
this.myUserControl.MailItem = mailItem;
}
}
如您所见,MailItem 被传递给 myUserControl 的一个属性。MyUserControl 稍后将需要访问此属性以从 MailItem 中提取一些信息。
我应该Marshal.ReleaseComObject()
在将 MailItem 传递给 myUserControl 以减少 RCW 的引用计数器之后还是这为时过早?
编辑:我的问题是,将从文件系统中打开一个 .msg 文件。关闭检查器后,用户尝试再次打开文件,但它已被锁定,我确信 COM 对象未正确释放是导致该问题的原因。