| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Деструктр статического объекта |
| Автор: Lazin 1.3.2010, 10:00 | ||||||
| Добрый день. Столкнулся со следующей проблемой. У меня есть некий класс Foo, у которого есть частная переменная
в деструкторе объекта, происходит ожидание этого события
объект класса Foo, является статическим членом другого класса
проблема собственно в том, что в деструкторе не происходит ожидание, хотя управление туда попадает я пока не разобрался в том, что там происходит, но если убрать все вызовы complete.Set() и все вызовы complete.Reset(), по идее, приложение должно зависнуть при завершении, на вызове WaitOne, но этого не происходит... В чем может быть дело? |
| Автор: mrbrooks 1.3.2010, 10:34 | ||
Dispose()? |
| Автор: Lazin 1.3.2010, 10:36 | ||
| пардон, у меня там false в конструкторе, должно зависать! у меня код, после WaitOne вообще не выполняется, то есть управление попадает в WaitOne, после чего приложение завершается
вот я и хочу узнать, могу я на него полагаться или нет дело в том, что моя библиотека, выполняет в фоне разные операции, и перед закрытием приложения, оно должно дождаться, пока моя библиотека завершит все операции ввода/вывода видимо придется делать это явно... |
| Автор: azesmcar 1.3.2010, 10:40 | ||
Читал как-то одну книгу, автор много страниц рассказывал о том, как написать программу, чтобы деструктор вызывался по желанию программиста, в конце нашел способ и сам же его опроверг на следующей странице
завершается? а может exception? по дебагером смотрел? |
| Автор: Lazin 1.3.2010, 10:44 |
| завернул вызов WaitOne в блок try catch - результат абсолютно такой-же... заходим в WaitOne, проходит несколько секунд и приложение завершается Добавлено через 16 секунд только под ним и запускал ) |
| Автор: azesmcar 1.3.2010, 10:54 | ||||||
Да, ты прав..скорее всего .NET убивает, проверил вот такой код
он ждет, но не ждет 10 секунд, предполагаю, что .NET при очистке мусора видет что деструктор что-то подвис и завершает программу (или делает что-то еще, но что-то определенно делает). Добавлено через 6 минут и 4 секунды Поискал, в MSDN-е ничего об этом не нашел, но скорее всего задерживать работу сборщика мусора не следует Добавлено через 10 минут и 41 секунду
|
| Автор: Lazin 1.3.2010, 11:07 |
| нда, видимо нужно будет реализовать метод Close, и не париться но как-то это совсем не кошерно |
| Автор: azesmcar 1.3.2010, 11:09 |
А почему не реализовать IDisposable? |
| Автор: mrbrooks 1.3.2010, 11:12 |
третьей мессагой меня это тоже заинтересовало чет вы тут мутите пацаны злое |
| Автор: Lazin 1.3.2010, 11:25 |
| а разве метод Dispose не вызывается сборщиком мусора? Добавлено через 32 секунды то есть, результат будет таким же, если не вызвать его явно, или не использовать using |
| Автор: mrbrooks 1.3.2010, 11:31 |
| да |