![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Добрый день.
У меня возникла следующая проблема. Используя Threading.Timer при завершении работы приложения делаю ему Dispose(). Но каким то образом приложение падает в TimerCallBack функции. Не мог бы мне кто нибудь объяснить как такое возможно? |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Похоже на ошибку синхронизации, выкладывай код.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
и у owner в методе Dispose вызываю Dispose этого контрола. Это сообщение отредактировал(а) nikakoi - 13.11.2007, 16:16 |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Сюда попадает при входах после Dispose? В общем, я бы на всякий случай обернул всю с работу в TimerTick и Dispose в lock(timer) { ... }. -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Сложно понять попадает ли туда. Баг воспроизводится не всегда, поэтому дебажить не получается. Только вот если я правильно понял lock следит за тем, чтобы работал только один поток. А мне как раз нужно чтобы у меня таймер работал в отдельном потоке от основного.
Ну если я правильно понял что такое lock, конечно:( Это сообщение отредактировал(а) nikakoi - 13.11.2007, 16:34 |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Дык Dispose вызывается всего один раз за время жизни приложения\формы\контрола, ощутимых потоковых коллизий это не даст, так что у тебя будет второй "поток" нормально работать. Кроме того он по Invoke вызывает код, т.е. многопоточности тут, по сути, нет.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
.. стоп, всё в TimerTick не надо оборачивать в lock, только обращения к disposing. Лучше наверное вообще все обращения к этому полю делать через свойство, там как раз вставить lock.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Угу=) Спасибо огромное... Так и сделал))
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |