【问题标题】:Arguments for CloseHandle() winapi call in .net.net 中 CloseHandle() winapi 调用的参数
【发布时间】:2009-08-26 06:34:21
【问题描述】:

通过.net P/Invoke访问winapi方法CloseHandle()时,参数应该是IntPtr还是HandleRef,为什么?

【问题讨论】:

  • 然后把问题放到正文中,做一个更好的标题。
  • @Guffa - 或者你可以编辑问题

标签: c# .net vb.net interop


【解决方案1】:

这真的是你的选择,取决于你如何获得手柄。如果句柄最初嵌入在某个托管对象中,则应使用 HandleRef。如果您从其他 PInvoke 函数获得句柄,而 .NET 对它们“一无所知”,请使用 IntPtr。

HandleRef 的优点是 .NET 承诺只要 HandleRef 存在就使容器对象保持活动状态,但随后仅编组 API 函数的句柄。在 CloseHandle 的具体情况下,这并不重要,所以 IntPtr 应该没问题。

【讨论】:

    【解决方案2】:

    HandleRef Structure documentation 很好地解释了它的重要性。它与垃圾收集器的正确功能有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-24
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2011-05-19
      • 1970-01-01
      相关资源
      最近更新 更多