【发布时间】:2011-10-16 21:43:59
【问题描述】:
非托管代码调用我的函数。在第一个函数中,我应该将指针传回我的托管对象。有时稍后我的一些其他函数会使用与参数之一相同的指针来调用。我应该取消引用它并使用它来执行一些计算,然后如果不需要它就将其处理掉。 简而言之,我需要固定该对象,以便 GC 在我处理它之前不会移动它。如何在 C# 中做到这一点? 提前致谢。
【问题讨论】:
-
贴一些代码,最好是最小的,完整的例子。
-
不要固定。非托管代码对指针没有用处。所以不要传递指针,传递一个“句柄”。比如说,静态
List<>中的索引。现在您可以简单地从句柄值中检索回调中的托管引用。
标签: c# c++ .net-4.0 interop marshalling