针对互操作程序集中的类型进行编程时,将像任何 CLR 引用类型一样对代理类型进行垃圾收集。一旦代理已经被垃圾收集,RCW 将把所有需要的 IUnknown::Release() 调用转发给关联的 COM 对象,并在这时销毁代理。使用该技术,可以确信只要代理在内存中是活动的,则关联的 COM 对象在内存中也是活动的。
如果希望确保 COM 类型以更及时和更可预言的方式被销毁,则可以利用 System.Runtime.InteropServices.Marshal 类型。该类定义了一个静态方法,名为 ReleaseComObject()。只是传递对象引用,关联的 COM 类型将被当场销毁:
|
using System.Runtime.InteropServices;
|
虽然销毁 COM 类型的想法听起来可能很吸引人,但必须知道在 AppDomain 中的其他 CLR 对象现在无法使用基本 COM 类型。有了这种(危险的)可能性,本文中的示例代码将避免使用 Marshal.ReleaseComObject()。
注 在即将发布的 .NET 平台(Microsoft_ Visual Studio.NET_ 2005,即 Whidbey)的版本中,这个问题已经得到解决。有关进一步的详细信息,请参阅 http://blogs.msdn.com/yvesdolc/archive/2004/04/17/115379.aspx.
Outlook 2003 对象模型
一旦引用了 Outlook PIA,下一个任务就是调查 Microsoft.Office.Interop.Outlook 命名空间中的很多类型(图 2)。
图 2. Microsoft.Office.Interop.Outlook 命名空间
不管类型的大小是多少,好消息是对象模型本身组织得非常好,并利用了常见设计模式。因此,一旦了解如何遍历联系人列表,则遍历收件箱项就会很简单。
其他的好消息是,整个对象模型在帮助文件 (vbaol11.chm) 中有完整的介绍,默认情况下该帮助文件位于 :\Program Files\Microsoft Office\OFFICE11\1033 下(图 3)。
图 3. Outlook 2003 文档
现在,坏消息(取决于您的视点)是帮助系统使用 VBScript 代码示例和成员原型。假定本文没有试图详细介绍 Outlook 2003 对象模型中的每个类型,请您参考该帮助系统来获得完整的信息。下面,让我们来研究某些核心类类型。
本U R L:http://www.qqread.com/csharp/u301211.html相关专题
- Java编程开发手册 (8321篇文章)
- Windows Shell开发:浏览一个文件夹 (0次浏览)
- Windows Shell编程系列 - 获取图标 (0次浏览)
- Windows Shell 开发:从“桌面”开始展开 (0次浏览)
- 实验分析C#中三种计时器使用异同点 (0次浏览)
- C#调用QTP自动化对象模型的实例 (0次浏览)
- 利用 C# 实现任务栏通知窗口 (0次浏览)
- 深入C#学习系列之不可小瞧的using关键字 (0次浏览)
- 如何用.NET技术在线生成网站LOGO (0次浏览)
- C#实现遗传算法 模拟花朵的进化 (0次浏览)
- c#里的运算符重载 (0次浏览)





