On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 2807
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.04.13 13:54. Заголовок: Как "снять" функцию или процедуру, которая "повисла" ?


Всем привет.
Столкнулся с большой проблемой...

Как можно прервать (снять) выполняемую (зависшую) функцию через определенный промежуток времени ?

Допустим у меня есть функция обновления с сайта VersionLoadInent(), а ответа с сайта нет, и вот ответа с сайта нет...
Хочу через 5 минут прервать выполнения этой функции VersionLoadInent().

Заранее спасибо за помощь !

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]


постоянный участник


Пост N: 881
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 20.04.13 14:19. Заголовок: Используй отдельный ..


Используй отдельный поток. Он не будет мешать выполнению основной задачи.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3057
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.04.13 14:26. Заголовок: Andrey пишет: Допус..


Andrey пишет:

 цитата:
Допустим у меня есть функция обновления с сайта VersionLoadInent()


Надо смотреть что у тебя в этой функции.
А вообще , попал в функцию VersionLoadInent , запомнил nstart:=Seconds() и далее сравнивай
Seconds()-nstart со своим таймаутом. Если вышло время выходим из процедуры.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2808
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.04.13 16:02. Заголовок: PSP пишет: Использу..


PSP пишет:

 цитата:
Используй отдельный поток. Он не будет мешать выполнению основной задачи.



Не могу, т.к. программу собираю на хХарборе без мультипоточности.
Что будет, если я соберу свою программу c [X] Use Multi Thread Library ?
Плюсы и минусы этого режима - просветите пожалуйста...

Dima пишет:

 цитата:
Если вышло время выходим из процедуры.


Там на INetConnect( cUrl,nPort ) вешается, т.е. сайт лежит и не отвечает....

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3058
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.04.13 16:43. Заголовок: Andrey пишет: Там н..


Andrey пишет:

 цитата:
Там на INetConnect( cUrl,nPort ) вешается, т.е. сайт лежит и не отвечает....


да явно таймаут не задать.
а в сырцах он -1

 
Use hb_inetGetHosts() and hb_inetConnectIP() for a finer timeout control


Ну и пробни hb_inetTimeout( <socket> [, <nTimeout> ] )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 882
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 20.04.13 17:04. Заголовок: Andrey пишет: Плюсы..


Andrey пишет:

 цитата:
Плюсы и минусы этого режима - просветите пожалуйста...


Плюсы: поток работает "сам по себе", периодически (в цикле) проверяя наличие обновлений. Даже если выполнение потока натыкается на вынужденное ожидание, это никак не сказывается на основной программе. Т.е., "не мешает" выполнению основной программы и не заставляет пользователя ждать. Если завершается программа, завершаются все потоки, ею созданные.
Минусов я не вижу.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет