C #: сохранение делегата из сборки мусора (статическая опция отсутствует) - PullRequest
0 голосов
/ 28 января 2011

В настоящее время я использую статический делегат в классе-оболочке для Cll-библиотеки, чтобы избежать сбора собранного делегата, который указывает на небезопасную функцию.
Это работало нормально, пока у меня не появилось требование поддерживать несколько экземпляров класса.Обходным путем может быть сохранение списка статических делегатов, но я хотел бы найти более простое решение.

Ответы [ 2 ]

3 голосов
/ 28 января 2011

Чтобы объект не собирался, необходимо сохранить ссылку на него.

Статические члены в статических классах действуют в течение всего времени жизни приложения.

Для членов класса экземпляра, в зависимости от вашего классадизайн и дизайн проекта, вы можете использовать разные подходы.Ведение статического списка не может быть плохой идеей.

Мой единственный вопрос - как вы можете понять, что делегат собирается.Потому что, если вы можете получить к нему доступ, значит, вы сохранили ссылку на него.В этом случае он должен был остаться в памяти.

1 голос
/ 28 января 2011

Я думаю, что вы допустили ошибку: статические переменные живут в течение всего жизненного цикла приложения, они никогда не будут GCed при запуске приложения.

...