Вопрос

В ASP.NET, если элементы остаются в состоянии сеанса, которые реализуют IDisposable, но никогда не удаляются и не удаляются приложением по истечении срока действия сеанса, будет ли Dispose вызываться для объектов, которые будет выполнять любой код в Dipose()?

Это было полезно?

Решение

Если IDisposable шаблон реализовано правильно, тогда да (т.деструктор класса позаботится об удалении объекта).Я не верю, что менеджер сеансов ASP.NET дает какие-либо гарантии относительно явного вызова Dispose() на занятиях, реализующих IDisposable.

Обратите внимание: несмотря на агрессивные возражения Марка, я не предлагаю «обычно» добавлять финализаторы.Я просто предлагаю, если вы хотеть тот Dispose метод вашего объекта, вызываемый по истечении срока действия сеанса, это жизнеспособный вариант.

Другие советы

Я бы не согласился с ответом Шона;во-первых, финализаторы должны нет регулярно добавляться в классы, даже если они IDisposable — Финализаторы следует использовать только в классах, представляющих неуправляемые ресурсы.И наоборот, класс с финализатором часто также IDisposable.

Повторный вопрос:является Dispose() позвонил - нет, это не так.В какой-то момент в будущем объект будет собран мусором (неопределенно), но это все.Финализатор здесь мало что добавит, поскольку любые инкапсулированные объекты также уже будут доступны для сбора (при условии, что на них больше нет ссылок).

Мне было бы интересно иметь одноразовые объекты в сеансе.Это почти наверняка создаст для вас проблемы с масштабируемостью.Все, что является одноразовым, вероятно, связано с каким-то ограниченным ресурсом; если у вас много активных сеансов, вы, вероятно, израсходуете этот ресурс.Во-вторых, я ожидаю, что многие (большинство?) одноразовых объектов не будут хорошо работать в веб-ферме, поскольку ресурс, к которому они привязаны, вероятно, является локальным для одной машины, и они не будут сериализоваться, а затем десериализоваться на другой машине в том же самом компьютере. состояние.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top