Я работал над кодами, чтобы безопасно и эффективно распоряжаться неуправляемыми объектами в C#. Это объект Bitmap, созданный с изображением. Мне нравится отслеживать дескриптор, чтобы узнать статус изображения в памяти до и после вызова Dispose(). Есть ли хороший способ выяснить, если дескриптор все еще указывает на действительный объект после вызова Dispose()?Как узнать, находится ли объект, указывающий на дескриптор, уже на C#?
ответ
Вы можете использовать Process Explorer для отслеживания объектов, используемых вашим процессом. Если ваш процесс правильно закрывает дескриптор, вы можете увидеть через проводник процессов, что процесс больше не содержит дескриптор объекта.
Спасибо. Звучит хорошо. Является ли это платформой третьей части. К сожалению, компьютер компании не допустит какой-либо не утвержденной или несанкционированной установки ... Есть ли встроенные функции? – Eric
Этот инструмент от Microsoft. Я не уверен, есть ли встроенная функция для этого. Я думаю, что под капотом Process Explorer устанавливает драйвер, который позволяет ему делать то, что не может быть сделано в пользовательском режиме. –
Process Explorer проверяет ядро HANDLEs .... полностью не связанное с вопросом. –
Значит, это неуправляемый дескриптор объекта? вы хотите отслеживать его через код? –
Нет, не используйте оракул. Это ваш код, который вызывает Dispose(), поэтому вы в принципе не можете знать, что он был удален. Используйте переменную * bool * для отслеживания. –