Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
3-47240
Nonam
2002-06-20 14:36
2002.07.15
Хранимая процедура в пакете


1-47571
Karen
2002-06-28 12:06
2002.07.15
Что это?


7-47857
Linx
2002-04-16 21:59
2002.07.15
Блокирование системных комбинаций клавиш.


3-47129
Eduard
2002-06-23 17:06
2002.07.15
Table unknown


1-47412
fissher
2002-07-02 22:04
2002.07.15
TRect