У меня проблема с утечкой памяти в приложении, над которым я работаю. Опыт научил меня, что одним из первых мест, где собранные мусором языки сталкиваются с утечками памяти, является подписка на события и отказ от их отмены позже. Вторая связана с хранением статического состояния. Я новичок в C # и разочарован непрозрачным типом события.
Мы обнаружили несколько ошибок двойной подписки благодаря удаче розыгрыша, но приложение действительно использует события для ряда вещей. Хотя нам хорошо известен принцип отказа от подписки на все, на что вы подписываетесь, утечки памяти все еще существуют. Я хотел бы систематически определять, что подписано на что.
Edit:
Спасибо за указатель на метод GetInvocationList()
. Я пытаюсь создать отладочную систему, которая будет выгружать результаты динамически. Проблема в том, что решения, которые я нашел, работали в .Net 2, но больше не в .Net 3.5. По сути, говорят вам, чтобы получить соответствующее FieldInfo для EventInfo (отражения, GetField и GetEvents соответственно). Однако в .Net 3.5 нет соответствующего FieldInfo, и EventInfo не позволяет мне получить список вызовов.
Я просто хочу вывести список событий и их InvocationList для целей отладки.