Форум: "Основная";
Текущий архив: 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.011 c