Задать вопрос

Как создать ссылку на делегат, чтобы сборщик мусора его не уничтожил?

При изменении размеров окна приложения вызывается делегат, который передаётся неуправляемому коду и программа вылетает с ошибкой: Был произведен обратный вызов делегата типа "OPENGL_SDK!OPENGL_SDK.Glut+dReshapeFunc::Invoke", полученного сборщиком мусора. Это может привести к сбоям приложения, а также к повреждению или утрате данных. При передаче делегатов в неуправляемый код управляемое приложение должно поддерживать их существование, пока не будет гарантировано, что они больше никогда не будут вызваны.

Я догадываюсь, что нужно сделать так, чтобы в управляемом коде делегат оставался в продолжение жизни программы, но как это сделать, я не знаю.
  • Вопрос задан
  • 3605 просмотров
Подписаться 4 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@AntonGoretskiy
Сохраняй в какой нибудь глобальной переменной ссылку на этот делегат до передачи неуправляемому коду.
Ответ написан
Комментировать
martsen
@martsen
Программист-дроновод
Объявите статическое поле.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы