Я пытаюсь заставить 2 разных браузера взаимодействовать друг с другом через хост с собственным кодом (C ++), используя JS window.external.
Синтаксис выглядит примерно так:
в месте назначения.js:
window.external.register("dest", eventCallbak);
function eventCallback(senderID, data) {
alert("message recieved from " + senderID + " with data of " + data);
}
на source.js:
window.external.sendMsg("source", "dest", "Hello dest! this is source...");
Мне удалось сделать это синхронно, сохранив параметр eventCallback
, сохранив его как IDispatch
ивызвать его, когда спросят (все в той же теме).проблем нет.
Проблемы начинаются при попытке сделать это асинхронно, что означает - сохранение eventCallback
как IDispatch
в одном потоке и его последующее использование в другом потоке, что приводит к сбою метода invokeс HRESULT
из E_UNEXPECTED
.
Есть идеи?
спасибо,