Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net中CloseHandle()winapi调用的参数_C#_.net_Vb.net_Interop - Fatal编程技术网

C# .net中CloseHandle()winapi调用的参数

C# .net中CloseHandle()winapi调用的参数,c#,.net,vb.net,interop,C#,.net,Vb.net,Interop,当通过.net p/Invoke访问winapi方法CloseHandle()时,参数应该是IntPtr还是HandleRef,以及原因?对其重要性有很好的解释。这与垃圾收集器的正确功能有关。这实际上是您的选择,取决于您如何获得句柄。如果句柄最初嵌入到某个托管对象中,则应使用HandleRef。如果您从其他PInvoke函数获得句柄,而.NET对它们一无所知,请使用IntPtr HandleRef的优点是.NET承诺只要HandleRef存在,就可以保持容器对象的活动状态,但随后只将句柄封送到A

当通过.net p/Invoke访问winapi方法CloseHandle()时,参数应该是IntPtr还是HandleRef,以及原因?

对其重要性有很好的解释。这与垃圾收集器的正确功能有关。

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


HandleRef的优点是.NET承诺只要HandleRef存在,就可以保持容器对象的活动状态,但随后只将句柄封送到API函数。在CloseHandle的特定情况下,这并不重要,因此IntPtr应该可以。

然后将问题放入文本中,并制作一个更好的标题。@Guffa-或者您可以编辑问题