Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Код: plaintext С потоками более-менее дружу для простейших случаев. Суть не в этом. При вызове URLDownloadToFile из отдельного потока почему-то подгружаются не все страницы... Некоторые подгрузиться не могут, и RetVal возвращает -2147221020 (&h800401E4). Что это за возвращаемый код, нигде не нашел. Если вызвать из основного потока - все грузится без ошибок. Куда копать? ... Не грузятся одни и те же страницы (примерно четверть от общего числа), ошибка строго повторяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 15:29 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
> Автор: Guest v.22 Покажи как потоки запускаешь, как проверку делаешь, как синхронизируешся Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 15:34 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Хм. Всё как обычно. Я думаю, проблема не в этом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 15:51 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
DeleteUrlCacheEntry MyHTTP у тебя потоки будут каждый друг дружке портить кэш во время работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 15:55 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Konst_One, Потоки одновременно не работают. Мне просто надо, чтобы программа не "висела". И даже если будут работать одновременно, то MyHTTP указан разный для каждого случая. Разве попортят кэш? Ну, это я просто так спросил, хотя и интересно. С закоментированным DeleteUrlCacheEntry тоже ничего не работает. Причем я уж при тестировании не все страницы прогоняю, а одну конкретную, которая "плохая"... все равно не грузит. А в основном потоке - грузит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:07 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
а не проще это решить через сервис или задание. зачем тебе извращение с потоками в VB? а проблема ,думаю, в правах. поток не получает каких-то прав на выполнение своих действий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:11 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
вот неплохая реализация нитей для VB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:17 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Konst_Oneа не проще это решить через сервис или задание. зачем тебе извращение с потоками в VB? а проблема ,думаю, в правах. поток не получает каких-то прав на выполнение своих действий.Да какое извращение?! Одна строчка кода всего: Код: plaintext 1. А вот сервис и задание - это уже повозиться надо будет. А что может быть не так с правами? 75% страниц же качаются нормально. Я понимаю, если б всё отрубилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:17 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
25% оставшихся страниц наверное имеют формы с параметрами или SSL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:19 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Konst_One вот неплохая реализация нитей для VBДа проблема-то вроде не с ними. Хотя посмотреть любопытно. Попробую с правами поиграться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:21 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Konst_One25% оставшихся страниц наверное имеют формы с параметрами или SSL?Все с парметрами. Все до единой. Однако вот... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 16:22 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Кстати, самый простой способ асинхронно загрузить файл без использования API - воспользоваться методом AsyncRead UserControl-a... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 18:26 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Может это поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 21:23 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Всем спасип. Вот что выяснилось у меня. Когда-то, еще при первом вызове URLDownloadToFile из потока, я что-то сделал с ошибкой и ни одна страница не загрузилась. Потом поправил, стало работать. Но те самые "плохие" страницы (что с ними не так? - не пойму) прописались в кэш намертво. Что их нету. Причем только, когда они грузятся именно в потоке. Как это запоминается и где?! Не пойму. Хоть в IDE, хоть скомпилированная в EXE - кто-то в виндовс помнит, что этот поток ломился на данную страницу, а ее - нету! И подсовывает соответственно. А в основном потоке - нормально. DeleteUrlCacheEntry ничего не делает. Я вообще не пойму, зачем он нужен, "хорошие" страницы и без него отдают свежие данные, в "плохих" он бесполезен совершенно. На форуме шарпистов, которые решили поиграться с API, случайно обнаружил, что перед URLDownloadToFile они зачем-то запускают CoInitialize(Null). Я собезьянничал, тоже в начало потока записал CoInitialize 0, и все заработало. Кэш незагруженных страниц сбрасывается, или, подозреваю, не используется вообще. Для красоты в конец потока записал CoUninitialize. Теперь пытаюсь разобраться, что это такое я прикрутил. Есть подозрения, что дело было не в кэше, хотя он тут каким-то боком имеет место быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 12:25 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
CoInitialize для внедрения вашего потока в память основного процесса вашей программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 12:28 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
т.е. происходит инициализация механизма COM для вашего потока, возможно на этом этапе и наследуются все права основного процесса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 12:30 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Аа, понятно. Т.е. CoUninitialize не нужен? Зачем поток убирать из памяти основного процесса, тем более, что он (поток) на следующем шаге сам закроется? И дело, похоже, не в правах. После однократного применения CoInitialize, пробовал при следующих запусках обойтись без него - все нормально. До тех пор, пока сеть не отключить и снова получить незагруженный файл. После этого страница становится недоступной, пока снова CoInitialize хотя бы однократно не применю. И вопрос... собственно для чего я и запускал закачку в отдельном потоке. Если вижу, что на какой-то странице процесс загрузки остановился и завис, что лучше сделать? Управление-то у меня осталось. Освободить все объекты и TerminateThread? А вдруг в виндах загрузка на каком-то СОМе останется висеть? Или лучше всю программу завершить (корректно), при этом вроде все ресурсы должны освободиться? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 12:57 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
если вы создаёте поток, то вы его и должны завершать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2010, 12:59 |
|
||
|
URLDownloadToFile в отдельном потоке
|
|||
|---|---|---|---|
|
#18+
Образовалось два вопроса: 1. Код: plaintext Как его правильней закрыть? А то даже у Эпплмена реализованы оба подхода: Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 2. Иногда при убитии потока (который грузил страницу в файл), этот файл остается заблокированным. Как-нибудь можно эту блокировку снять? Файл-то заблокирован моим приложением, права должны быть. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2010, 13:05 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36598832&tid=2159861]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 136ms |

| 0 / 0 |
