![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
andrew_sh |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 12.6.2007 Репутация: нет Всего: нет |
Приветствую. Столкнулся с "вечной" прблемой сихронизации таймера. Попробую описать суть.
WinControl используеться на странице *.aspx (в принципе не важно где). При его инициализации создается таймер (Threading.Timer). Который каждую секунду (для удобства) проверяет данные на диске и обновляет индикаторы на контроле. Если очень часто обновлять страницу (раз скажем 5-10, постоянно и даже не дожидаясь пока она обновиться до конца), а потом закрыть браузер, вываливается исключение.... Точно не помню..... Что то типа: ошибка синхронизации...вызывающего потока не существует Т.е. тики таймера срабатывают и пытаються обновить контрол, которого уже нет..... Timer.Dispose() не помогает. Проверка Control.IsDisposed также не помогает. Пробовал через дополнительный обьект, также не катит... Даже не знаю куда копать и как с этим бороться. ЗЫ: Примеры Кода и тект исключения приведу завтра утром (остались на работе). |
|||
|
||||
andrew_sh |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 12.6.2007 Репутация: нет Всего: нет |
Вот собственно текст исключения :
A first chance exception of type 'System.ComponentModel.InvalidAsynchronousStateException' occurred in System.Windows.Forms.dll Additional information: An error occurred invoking the method. The destination thread no longer exists. Вкратце код:
Класс BDiagnostic:
Но вот собственно все.... Помогите разобраться плиз.....Уже 2 дня парюсь немлгу найти решение.... ЗЫ: За кривой код не бить, я еще только учусь ))) |
||||
|
|||||
andrew_sh |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 12.6.2007 Репутация: нет Всего: нет |
Все разобрался ...
В методе Dispose контрола сначала делал Dispose всем компонертем, а потом останавливал таймер, что и приводило к обращению несуществющих методов (вышеописаное исключение).... Правильный код (читай рабочий)
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |