powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Правильный Dispose
25 сообщений из 28, страница 1 из 2
Правильный Dispose
    #38160741
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс. Ну например такой
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class MyClass : IDisposable
{
   List<MyClass_2> list;      //  MyClass_2 - тоже Idisposable
   
   void Dispose()
  {
      // как правильно здесь реализовать???
      1. list.Clear()
      или 
     2. что то типа такого
      while (list.Count() > 0)
     {
         list[0].Dispose();
         list.remove(0);
     }
  }
}
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160763
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160765
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160773
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

3 - а если вообще не реализовывать Idispose? :)
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160774
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160776
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanАлексей К,

3 - а если вообще не реализовывать Idispose? :)

А как освобождаться от неуправляемых ресурсов?
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160804
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_system,

а тут не слово про "неуправляемые". гляньте http://msdn.microsoft.com/en-us/library/b1yfkh5e%28v=vs.100%29.aspx
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160806
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос, а если этот list у меня еще где то используется и я не хочу его диспозить?
то вызвать
Код: c#
1.
list.clear()


or
Код: c#
1.
while (list.count()>0) list.remove(0)
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160828
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanvirus_system,

а тут не слово про "неуправляемые". гляньте http://msdn.microsoft.com/en-us/library/b1yfkh5e%28v=vs.100%29.aspx

ну слово то хотя бы есть.... "Реализация методов Finalize и Dispose для очистки неуправляемых ресурсов"
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160830
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_systemArm79virus_system,

SmtpClient, проблема, вскипает мозк, помогите плиз

не понял?

А чего непонятного? Берете свой класс и наследуете от DisposableTemplate

Переопределяете в наследнике методы DisposeManagedResources(); DisposeUnmanagedResources();, в которых и осуществляете чистку соответственно управляемых и неуправляемых ресурсов


virus_systemИ еще вопрос, а если этот list у меня еще где то используется и я не хочу его диспозить?
Не надо список делать разделяемым, если это возможно.

list.ForEach(i => i.Dispose());
list.Clear();
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160840
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Не надо список делать разделяемым
Т.е. разделяемым???
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160848
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_systemесли этот list у меня еще где то используется
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160850
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79virus_systemпропущено...


не понял?

А чего непонятного? Берете свой класс и наследуете от DisposableTemplate

Переопределяете в наследнике методы DisposeManagedResources(); DisposeUnmanagedResources();, в которых и осуществляете чистку соответственно управляемых и неуправляемых ресурсов

Это я реализовал. Вопрос то про списки.
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160859
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_systemЭто я реализовал. Вопрос то про списки.

Что за вопрос то? Вы четко скажите, что есть, и что хотите. А то ваши вопросы, оторванные от общего контекста, никак не приводят к пониманию.
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160860
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

я так понял вопрос в том, нужно ли вызывать Dispose() для каждого элемента списка?
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160865
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanArm79,

я так понял вопрос в том, нужно ли вызывать Dispose() для каждого элемента списка?

Да.
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160872
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_systemnetivanArm79,

я так понял вопрос в том, нужно ли вызывать Dispose() для каждого элемента списка?

Да.

Если элемент списка поддерживает диспозе, то не просто нужно, а необходимо.

list.ForEach(i => i.Dispose());
list.Clear();

вместо
while (list.Count() > 0)
{
list[0].Dispose();
list.remove(0);
}
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160887
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_systemnetivanАлексей К,

3 - а если вообще не реализовывать Idispose? :)

А как освобождаться от неуправляемых ресурсов?Их лучше по возможности не делать членами классов. Создавать и освобождать через using внутри методов. Делать членом класса только в крайнем случае.
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160890
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79, а если у меня список разделяемыый.

Ну например что то вроде дерева... Есть общий список, а в каждом есть еще ссылки на чилдрены.
то у объекта просто вызвать childList.clear()??? (с условием то что общий список все заспизит.)
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160899
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_systemArm79, а если у меня список разделяемыый.

Ну например что то вроде дерева... Есть общий список, а в каждом есть еще ссылки на чилдрены.
то у объекта просто вызвать childList.clear()??? (с условием то что общий список все заспизит.)

Мой подход заключается в том, что ответственность за Dispose() возлагается на того, что этот объект создал.
Если какой-то класс создал список, заполнил его элементами, и передал его части на обработку в другие классы, то и уничтожать объекты этого списка должен он сам
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160903
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Если элемент списка поддерживает диспозе, то не просто нужно, а необходимо.
На самом деле... Все очень зависит от места отрастания рук у писавшего классы реализующие элементы этого списка... да и сам класс его (этот список) использующий...
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160906
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_system,

а что у вас за такие неуправляемые ресурсы если не секрет
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160921
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanvirus_system,

а что у вас за такие неуправляемые ресурсы если не секрет

неуправляемых то у меня и нет. Просто хочется разобраться в этом вопросе...
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160934
virus_system
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser, Arm79

Щас просто пример... без всякого контекста...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class ListObjects
{
   List<MyObject> list;
   

   void  Disopse()
  {
      list.foreach(i=>i.dispose())
      list.clear()
  }
}

class MyObject
{
   List<MyObject>  childList;

   void Dispose()
   {
       childList.clear();   // вот здесь правильно или нет????
   }

}
...
Рейтинг: 0 / 0
Правильный Dispose
    #38160961
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virus_system,

если без контекста, то я не знаю. общий смысл вроде правильный, но точно сказать нельзя.

Вопрос: зачем экземпляру класса MyObject нужно некое подмножество исходного списка с другими экземплярами того же типа?
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Правильный Dispose
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]