![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
Добрый день.
Столкнулся со следующей проблемой. У меня есть некий класс Foo, у которого есть частная переменная
в деструкторе объекта, происходит ожидание этого события
объект класса Foo, является статическим членом другого класса
проблема собственно в том, что в деструкторе не происходит ожидание, хотя управление туда попадает я пока не разобрался в том, что там происходит, но если убрать все вызовы complete.Set() и все вызовы complete.Reset(), по идее, приложение должно зависнуть при завершении, на вызове WaitOne, но этого не происходит... В чем может быть дело? Это сообщение отредактировал(а) Lazin - 1.3.2010, 10:01 |
||||||
|
|||||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
нет, 1 раз Reset нужно вызвать, тогда будет зависать, ты же в конструктор true передал
п.с. а ты уверен что в твоем случае можно полагаться на деструктор? Это сообщение отредактировал(а) azesmcar - 1.3.2010, 10:27 |
||||||
|
|||||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
пардон, у меня там false в конструкторе, должно зависать!
у меня код, после WaitOne вообще не выполняется, то есть управление попадает в WaitOne, после чего приложение завершается
вот я и хочу узнать, могу я на него полагаться или нет ![]() дело в том, что моя библиотека, выполняет в фоне разные операции, и перед закрытием приложения, оно должно дождаться, пока моя библиотека завершит все операции ввода/вывода видимо придется делать это явно... |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
Читал как-то одну книгу, автор много страниц рассказывал о том, как написать программу, чтобы деструктор вызывался по желанию программиста, в конце нашел способ и сам же его опроверг на следующей странице ![]()
завершается? а может exception? по дебагером смотрел? |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
завернул вызов WaitOne в блок try catch - результат абсолютно такой-же... заходим в WaitOne, проходит несколько секунд и приложение завершается
Добавлено через 16 секунд только под ним и запускал ) |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
Да, ты прав..скорее всего .NET убивает, проверил вот такой код
он ждет, но не ждет 10 секунд, предполагаю, что .NET при очистке мусора видет что деструктор что-то подвис и завершает программу (или делает что-то еще, но что-то определенно делает). Добавлено через 6 минут и 4 секунды Поискал, в MSDN-е ничего об этом не нашел, но скорее всего задерживать работу сборщика мусора не следует ![]() Добавлено через 10 минут и 41 секунду
|
||||||
|
|||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
нда, видимо нужно будет реализовать метод Close, и не париться
но как-то это совсем не кошерно ![]() |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
||||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: нет Всего: 154 |
а разве метод Dispose не вызывается сборщиком мусора?
Добавлено через 32 секунды то есть, результат будет таким же, если не вызвать его явно, или не использовать using |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 7 Всего: 306 |
да
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |