如何确定 .NET 中打开的句柄数
How to determine number of open handles in .NET
我正在使用 VB2012 创建一个 WinForms 应用程序。表单使用户能够创建 "pages"。每页都有一定数量的问题。这些问题是调查问题,带有用于回答的单选按钮。根据页面上有多少问题,如果他们添加太多页面,程序会抛出一个错误,说它无法创建句柄。显然我打开的太多了,需要处理掉一些。
我需要确定我是否接近限制,以便我可以停止创建更多页面,但我不知道要检查什么以了解我有多接近。
顺便说一句,一个页面只是一个面板,上面有另一组问题添加到主面板,这样面板就可以像页面一样翻阅。
每个问题都是一个 class,上面有大约 20 个对象。问题总数似乎是 500 个左右(不考虑页数)。
谢谢。
我认为这些评论给了 OP 一些很好的建议,但只是为了回答原来的问题:
Process.GetCurrentProcess.HandleCount
Gets the number of handles opened by the process.
Handles provide a way for a process to refer to objects. A process can obtain handles to files, resources, message queues, and many other operating system objects. The operating system reclaims the memory associated with the process only when the handle count is zero.
我正在使用 VB2012 创建一个 WinForms 应用程序。表单使用户能够创建 "pages"。每页都有一定数量的问题。这些问题是调查问题,带有用于回答的单选按钮。根据页面上有多少问题,如果他们添加太多页面,程序会抛出一个错误,说它无法创建句柄。显然我打开的太多了,需要处理掉一些。
我需要确定我是否接近限制,以便我可以停止创建更多页面,但我不知道要检查什么以了解我有多接近。
顺便说一句,一个页面只是一个面板,上面有另一组问题添加到主面板,这样面板就可以像页面一样翻阅。
每个问题都是一个 class,上面有大约 20 个对象。问题总数似乎是 500 个左右(不考虑页数)。
谢谢。
我认为这些评论给了 OP 一些很好的建议,但只是为了回答原来的问题:
Process.GetCurrentProcess.HandleCount
Gets the number of handles opened by the process.
Handles provide a way for a process to refer to objects. A process can obtain handles to files, resources, message queues, and many other operating system objects. The operating system reclaims the memory associated with the process only when the handle count is zero.