|
|
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
вот есть такой код получающий страницы по winnet, зачастую после вывода строки HttpOpenRequest Successfull перед функцией HttpSendRequest программа подвисает на несколько минут, либо очень надолго, можно ли сделать какой-нибудь таймаут для этих ф-й или как можно получать страницу с таймаутом? Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. у меня там ещё таймер есть, а getpage вызвается из обработчика события таймера в цикле, что тогда конкретно в потоке запускать? может есть где простой иходничек работы с потоками? а что происходит в том случае, если код в потоках ещё не отпработал, а наступает следующее событие таймера, например код в каком-то потоке не может получить страницу и подвис, этот код уничтожется или эти недоработавшие потоки будут висеть где-то в памяти? а сам по себе таймер не создает отдельные потоки случайно? Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2007, 21:11:01 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
1) Если timer callback-функция затянется (что у вас сейчас), вы будете или пропускать события, или они будут копиться в очереди (не помню точно), и то и другое плохо. Если потоки будут в цикле, который в таймере, то если таймер у вас будет чаще срабатывать, чем потоки успевают отрабатывать, то количество потоков будет постоянно расти. Потоки будут исполняться(ждать) пока не произойдет выход из их функции или их принудительно не завершат извне. 2) таймер насколько я помню другой механизм использует - APC 3) а для определения что происходит при коннектах, запросах и т.д., и почему висит, можно использовать вот это Если не секрет, зачем такая архитектура (с таймером)? Поищите в гугле про многопоточную модель-конвейер, она вам тут в самый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2007, 02:49:32 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
программа висит в памяти и периодически запрашивает информацию с определённых страниц, а что можно сделать как-то без таймера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2007, 08:55:21 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
легко можно (даже нужно) без таймера, например, с помощью Sleep или функций ожидания. Какой период таймера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2007, 20:43:47 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
делаю потоки таким образом с таймаутом 5 сек, виснуть перестало, но иногда возникает такое, что пропадает связь на модеме (нельзя открыть ничего в броузере) и все идет в таймаут "Can not connect to server" ровно раз в 5 сек, пока не завершишь программу, перегрузка какая-то чтоли, по идее все потоки должны завершаться через 5 сек, всё ли правильно в программе? а как сделать чтобы потоки работали параллельно несколько или они и так работают, но почему тогда puts(pThreadParm->url); выводит ровно раз в 5 сек... Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 23:27:36 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
в WorkerFunction вызывается getpage (см. первое сообщение), которая часто подвешивается, WaitForSingleObject ждёт 5 сек и потом по идее должна завершать поток, я думал это делает CloseHandle (hThread), но она этого не делает!!! копиться много потоков, пока не сожрут все ресурсы системы, как грамотно завершить поток? Код: 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 11:19:14 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
программа должна быстро коннектица к большому числу url Как избавиться от зависания InternetOpenUrl или HttpSendRequest? зависает похоже на 5 мин, при недоступности сервера, таймаут этот гдето в настройках броузера, поменять его нельзя, закрытие описателей winapi ф-й в таймауте выполнения потока не помогает, если убивать потоки TerminateThread, то потом интернет ломается, нет связи, видимо не освобождаются какие-то ресурсы так, если забивать на зависшие потоки, то потом их становится очень много и опять же интернет ломается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 20:07:53 |
|
||
|
подвисает wininet
|
|||
|---|---|---|---|
|
#18+
Satellпрограмма должна быстро коннектица к большому числу url Не используй wininet. Лучше просто открывай сокет, коннекться к удаленому серверу на 80-ый порт, посылай туда GET и получай свою страничку. Намного проще, надежней и удобней будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2007, 22:43:56 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=279&tid=2028271]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 347ms |

| 0 / 0 |
