Автор | Сообщение |
|
| постоянный участник
|
Пост N: 2807
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.13 13:54. Заголовок: Как "снять" функцию или процедуру, которая "повисла" ?
Всем привет. Столкнулся с большой проблемой... Как можно прервать (снять) выполняемую (зависшую) функцию через определенный промежуток времени ? Допустим у меня есть функция обновления с сайта VersionLoadInent(), а ответа с сайта нет, и вот ответа с сайта нет... Хочу через 5 минут прервать выполнения этой функции VersionLoadInent(). Заранее спасибо за помощь !
|
|
|
Ответов - 5
[только новые]
|
|
|
| постоянный участник
|
Пост N: 881
Зарегистрирован: 27.01.07
|
|
Отправлено: 20.04.13 14:19. Заголовок: Используй отдельный ..
Используй отдельный поток. Он не будет мешать выполнению основной задачи.
|
|
|
|
| |
Пост N: 3057
Зарегистрирован: 17.05.05
|
|
Отправлено: 20.04.13 14:26. Заголовок: Andrey пишет: Допус..
Andrey пишет: цитата: | Допустим у меня есть функция обновления с сайта VersionLoadInent() |
| Надо смотреть что у тебя в этой функции. А вообще , попал в функцию VersionLoadInent , запомнил nstart:=Seconds() и далее сравнивай Seconds()-nstart со своим таймаутом. Если вышло время выходим из процедуры.
|
|
|
|
| постоянный участник
|
Пост N: 2808
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.13 16:02. Заголовок: PSP пишет: Использу..
PSP пишет: цитата: | Используй отдельный поток. Он не будет мешать выполнению основной задачи. |
| Не могу, т.к. программу собираю на хХарборе без мультипоточности. Что будет, если я соберу свою программу c [X] Use Multi Thread Library ? Плюсы и минусы этого режима - просветите пожалуйста... Dima пишет: цитата: | Если вышло время выходим из процедуры. |
| Там на INetConnect( cUrl,nPort ) вешается, т.е. сайт лежит и не отвечает....
|
|
|
|
| |
Пост 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> ] )
|
|
|
|
| постоянный участник
|
Пост N: 882
Зарегистрирован: 27.01.07
|
|
Отправлено: 20.04.13 17:04. Заголовок: Andrey пишет: Плюсы..
Andrey пишет: цитата: | Плюсы и минусы этого режима - просветите пожалуйста... |
| Плюсы: поток работает "сам по себе", периодически (в цикле) проверяя наличие обновлений. Даже если выполнение потока натыкается на вынужденное ожидание, это никак не сказывается на основной программе. Т.е., "не мешает" выполнению основной программы и не заставляет пользователя ждать. Если завершается программа, завершаются все потоки, ею созданные. Минусов я не вижу.
|
|
|
|