Re: SOS. MSHTML в дауне...
От: IvanTheFool  
Дата: 02.07.02 14:47
Оценка:
Здравствуйте Аноним, Вы писали:
I'm sorry I got already the link of your project...

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


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


А>Есть мультитредовый проект. Каждый поток порождает объект UI-less парсер (взятый с EuroMind). Все что нужно сделать каждому потоку — взять html документ, дождаться полной его загрузки, вернуть результат в виде коллекции HTML элементов (IHTMLElementCollection). Этот процесс происходит в бесконечном цикле внутри каждого потока.


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


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


А>1) Неправильно создан COM в рамках потока

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

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


А>Проект не сложный, Но ввиду невозможности публиковать здесь весь код приложения, даю ссылку на ZIP файл. Только simple_html.htm нужно положить именно в то место, которое прописано в коде программы (именно этот файл загружается каждым потоком). По умолчанию это 'C:\simple_html.htm'. Проект cool site
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.