Я пишу объект Browser Helper для Internet Explorer, и мне нужно вызывать методы javascript для всех открытых экземпляров браузера из «статического» (или «глобального») метода обратного вызова.
У меня проблемы, которые, я уверен, связаны с многопоточностью в COM. Мои вопросы:
Каждый браузер будет иметь свой собственный объект IWebBrowser2
, на который указывает CComPtr<IWebBrowser2>
. Если у меня есть статический метод обратного вызова в моем классе BHO, в какой поток поступит этот обратный вызов? Будет ли это какой-либо из потоков BHO, созданных IE?
Я пытался кэшировать все указатели IWebBrowser2
, созданные в каждом BHO, и обращаться к ним позже из статического метода. Тем не менее, я думаю, что есть некоторые проблемы, связанные с (не) сортировкой. Будет ли это работать? Любые предложения о хорошем / другом подходе к этому?