1
我試圖讓2個不同的瀏覽器通過使用JS window.external的本地代碼主機(C++)相互通信。是否有可能從不同的線程調用JS函數?
語法是這樣的:
上destination.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方法失敗的E_UNEXPECTED
HRESULT
。
任何想法?
謝謝,
是的,最終我用CoMarshalInterThreadInterfaceInStream來解決它。 謝謝! – Omer 2011-04-30 18:23:04