Здравствуйте, Аноним, Вы писали:
A>>пусть клиенты вызывают Dispose на здоровье, а ты поставь собственный счетчик ссылок на ресурс и прибивай ресурс в вызове последнего Dispos`а.
А>Тогда нужно абязать клиентов вызывать некий AddRef, парный Dispose(). Ведь клиенты могут передавть ссылку на ресурс друг гругу. Вообще-то это криво: возвращяться к глючному ручному подсчёту ссылок в стиле "COM без смарт-указателей".
где ж тут кривизна? все вызовы создания проходят через ResourceManager, пусть и все вызовы удаления через него проходят — подсчет ссылок не составит труда.
A>>и не путай Dispose с деструктором.
А>С чего ты взял что я не путаю. Если следовать общепринятой семантике Dispose, то этот метод должен перевести объект в некое предсмертное состояние, в котором при любом вызов приводит к ObjectDisposedException.
по моему, это не так. хотя я могу ошибаться...
вот код. вроде не падает...
System.Drawing.SolidBrush br = new SolidBrush(Color.LightGreen);
br.Dispose();
br.Dispose();
А>Это вряд ли понравится остальным клиентам.