21、C与COM组件集成及诊断工具详解

C#与COM组件集成及诊断工具详解

1. C#与COM组件集成

1.1 COM与C#对象的绑定

COM与C#之间的互操作通过早期绑定或晚期绑定实现。早期绑定允许在编译时使用已知类型进行编程,而晚期绑定则通过动态发现来使用类型,在C#端使用反射,在COM端使用IDispatch。
- 从C#调用COM程序 :早期绑定通过为COM对象及其接口提供程序集形式的元数据来实现。TlbImp.exe工具可以将COM类型库转换为程序集中的等效元数据。使用生成的程序集,就可以像操作其他C#对象一样实例化和调用COM对象的方法。
- 从COM调用C#程序 :早期绑定通过类型库实现。TlbExp.exe和RegAsm.exe工具可以从程序集生成COM类型库,然后可以在支持通过类型库进行早期绑定的工具(如Visual Basic 6)中使用该类型库。

1.2 向C#公开COM对象

实例化COM对象时,实际上是在使用一个名为运行时可调用包装器(Runtime Callable Wrapper,RCW)的代理。RCW负责管理COM对象的生命周期,并将对其调用的方法转换为对COM对象的适当调用。当垃圾回收器终结RCW时,它会释放对其所持对象的所有引用。如果需要在不等待垃圾回收器终结RCW的情况下释放COM对象,可以使用System.Runtime.InteropServices.Marshal类型的静态ReleaseComObject方法。
以下是一个使用C#通过COM互操作更改MSN即时通讯工具友好名称的示例:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值