如何确定句柄指向的对象是否已在C#中处理?

如何确定句柄指向的对象是否已在C#中处理?,c#,handle,unmanagedresources,C#,Handle,Unmanagedresources,我一直在编写代码,以安全高效地处理C#中的非托管对象。这是使用图像创建的位图对象。我喜欢跟踪句柄,以了解调用Dispose()前后内存中映像的状态。是否有一种好方法可以确定在调用Dispose()后句柄是否仍然指向有效对象?您可以使用它来跟踪进程使用的对象。如果您的进程正确地关闭了句柄,那么您可以通过process explorer看到该进程不再持有对象的句柄。那么它是非托管对象句柄吗?您想通过代码跟踪它吗?不,不要使用oracle。调用Dispose()的是您的代码,因此您基本上无法知道它已被

我一直在编写代码,以安全高效地处理C#中的非托管对象。这是使用图像创建的位图对象。我喜欢跟踪句柄,以了解调用Dispose()前后内存中映像的状态。是否有一种好方法可以确定在调用Dispose()后句柄是否仍然指向有效对象?

您可以使用它来跟踪进程使用的对象。如果您的进程正确地关闭了句柄,那么您可以通过process explorer看到该进程不再持有对象的句柄。

那么它是非托管对象句柄吗?您想通过代码跟踪它吗?不,不要使用oracle。调用Dispose()的是您的代码,因此您基本上无法知道它已被释放。使用bool变量来跟踪。谢谢。听起来不错。这是第三部分框架。不幸的是,公司计算机不允许任何未经批准或未经授权的安装。。。是否有任何内置功能?此工具来自Microsoft。我不确定是否有一个内置的函数来执行此操作。我认为在幕后,Process Explorer安装了一个驱动程序,允许它执行在用户模式下无法完成的操作。。。。与问题完全无关。@BenVoigt好吧,是和否。你是对的,它没有在handles视图中显示GDI对象。但是,通过将GDI对象列添加到主视图中,您仍然可以看到每个进程的GDI对象数。@Eric,这似乎与您的问题类似