![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| kaa |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: нет Всего: 2 |
Создаю в конструкторе соединене с БД, объект DataAdpter и объект DataSet
Пытаюсь залить из дата-адаптера в дата-сет базу в обработчике:
Так он ругается что ни da ни ds невидит ПОчему? Может их нельзя в конструкторе определять? Знаю конечно что код кривлват, но эт пробная прога, потому очень хочется заставить её работать |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Для конструктора эти переменные доступны, потому что они объявлены в нём (локально). После выхода из конструктора они не видны, и кстати garbage collector съест их оба (соединение и адаптер), потому что никем не используются. Нужно добавить в класс два поля - для соединения и адаптера, соответственно, и присваивать им значения, и их же использовать в button3_Click. -------------------- ![]() |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 1 Всего: 65 |
Вроде так должно быть. Это сообщение отредактировал(а) thomas - 19.11.2006, 15:13 -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Softaz |
|
||||||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Если нужно продлить сущестование объекта до завершения метода
add Или же так
Это сообщение отредактировал(а) Softaz - 19.11.2006, 16:31 -------------------- Разочарованный в .NET |
||||||
|
|||||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Softaz, пока ссылка p на SomeClass не выйдет из контекста (а она выйдет только после завершения метода, т.к. она объявлена в самом верхнем блоке метода) сборщик мусора не подберет этот объект
|
|||
|
||||
| Softaz |
|
||||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
За небольшим исключением. Если объект использует таймер для выполнения операций в фоне или заключает в себе неуправляемый ресурс, который нельзя освобождать до конца метода. В обоих этих случаях в объекте должен быть реальзован интерфейс IDisposable, а использоваться объект должен в блоке using или try-catch-finally.
Там ей в верху и место (в т.н. глобальных переменных), если собирается существовать до завершения приложения. После некоторых сборок мусора такие объекты переводятся в поколение 2 и GC игнорирует их при сборе мусора у объектов опколений 0 и 1, что ускорит сбор мусора. Также эти объекты будут созданы в начальной области управляемой кучи, так что .NET их не придется перемещать при дефрагментации кучи. Это сообщение отредактировал(а) Softaz - 19.11.2006, 16:02 -------------------- Разочарованный в .NET |
||||
|
|||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Softaz, ничего не понял
Какой таймер, какие операции, какой неуправляемый ресурс, какой IDisposable... По порядку: Контекст --- это код заключенный в {}. Если переменная объявлена в {}, то она перестает существовать после закрывающейся скобки. Ссылка на класс хранится в стеке, а значит подчиняется его законам Сборщик мусора подбирает только те объекты на которых нет ссылки (не надо только в меня тыкать слабыми ссылками Поэтому, так как ссылка р объявлена в контексте метода (в его главных {} скобках), то класс 100% будет существовать до конца метода. P.S. Мы не говорим о ссылках, объявленных в контексте класса |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
А я как раз о них говорю. Тот код, что thomas написал. -------------------- Разочарованный в .NET |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
Я вообще не вижу смысла в GC.KeepAlive в управляемом коде.
Ведь если на объект не указывает ни одной ссылки, то получить мы его при всем желании не сможем, как бы ни старались Добавлено @ 16:18 Не, ну тогда я совсем дуб в C# В этом коде р объявлена внутри класса и именно для нее ты вызываешь KeepAlive, чем "продлеваешь существование объекта до завершения метода" P.S. Кто-то из нас ошибается |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Первый абзац - про метод.
Второй - про класс -------------------- Разочарованный в .NET |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
|
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
-------------------- Разочарованный в .NET |
|||
|
||||
| kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: нет Всего: 2 |
Понил!
Всем пасиба ответы! Пойду переменные ваять |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
-------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |