其他封送处理示例
诸如垃圾回收和线程处理等因素可能影响 interop 封送拆收器的行为。 此外,编程和类型模型方面的微小差异也可能使向非托管库传递数据的操作出现混乱。 本节提供一组解决其中某些差异的示例。
下表列出各种类型的项的封送处理选项,描述它们的用法并提供到相应示例的链接。
项的类型 |
说明 |
示例 |
---|---|---|
函数指针 |
将委托传递给需要函数指针的非托管函数。 |
|
使用 HandleRef 结构防止垃圾回收。 |
||
LPARAM |
使用 GCHandle 结构将托管对象传递给需要 LPARAM 类型的非托管函数。 |
|
单线程单元 (STA)/多线程单元 (MTA) |
在非托管函数调用 CoInitialize 时更改默认单元设置。 |
|
void* |
调用将 void* 作为参数的函数。 |