Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Вниз

SOS. MSHTML в дауне...   Найти похожие ветки 

 
w666w   (2002-07-02 10:40) [0]

Опытные разработчики мультитредовых приложений, использующих COM объекты (в данном случае mshtml.dll)! Помогите разобраться с проблемой, над которой я бьюсь уже болше полугода и не вижу даже свет в конце туннеля...

Сутьпроблемы в следующем:

Есть мультитредовый проект. Каждый поток порождает объект UI-less парсер (взятый с <a href=" http://www.euromind.com/iedelphi/uilessparser.htm">EuroMind</a>). Все что нужно сделать каждому потоку - взять html документ, дождаться полной его загрузки, вернуть результат в виде коллекции HTML элементов (IHTMLElementCollection). Этот процесс происходит в бесконечном цикле внутри каждого потока.

Когда запущен 1 поток, все ОК. Но когда добавляешь еще, со временем происходит подвисание проги. Причем подвисание довольно интересного вида - при попытке закрыть приложение, работа ВСЕХ ПОТОКОВ ПРОДОЛЖАЕТСЯ. Т.Е. программа как бы снова оживает. Но опять не на долго.

По всей видимости имеет место какая-то проблема из следующих

1) Неправильно создан COM в рамках потока
2) Неправильно синхронизированы потоки и методы, в них происходящих.
3) Неправильно организована работа с сигналами (PostThreadMessage и т.п.)

Возможно специалист в области COM программирования обнаружит еще какую-нибудь ошибку, но я вижу только эти...

Проект не сложный, Но ввиду невозможности публиковать здесь весь код приложения, даю ссылку на ZIP файл. Только simple_html.htm нужно положить именно в то место, которое прописано в коде программы (именно этот файл загружается каждым потоком). По умолчанию это "C:\simple_html.htm". Проект <a href=" http://www.ncstu.ru/sample.zip">здесь</a>


 
int64   (2002-07-02 15:58) [1]

Ты используешь глобальную переменную Doc : IhtmlDocument2.

Каждый школьник знает, что бывает при использовании глобальных переменных в потоках.

Перерисуй её в класс TUILess.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
1-47332
easy
2002-06-27 09:18
2002.07.15
Cls


1-47364
Dmk
2002-07-02 05:15
2002.07.15
Как узнать указатель на функцию?


1-47463
AlexanderSK
2002-07-03 15:56
2002.07.15
TClientDataSet и TBDEClientDataSet


4-47900
sammy
2002-05-08 10:57
2002.07.15
POWERBROADCAST


3-47238
Nonam
2002-06-20 17:03
2002.07.15
Пакеты Oracle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский