2012-06-26 21 views
0

通過引用Another Question About ActiveX freezes IE,我寫了一個Active,就像作者所做的那樣,當activex做些什麼時,整個IE都凍結了。沒有其他選項卡可以選擇,也沒有可以關閉的選項卡中的ActiveX。爲什麼我的ActiveX凍結IE Tab,但其他的東西像flash不?

我知道我可以編寫一些線程代碼來完成這項工作。但是,我的問題是,像Flash或Silverlight的其他ActiveX,他們如何解決方法?我不相信他們能夠異步地完成所有的工作,也許他們所有的工作都很短,所以我們從來沒有注意到延遲?

歡迎任何建議。謝謝。

回答

0

您無法在IE的UI線程上執行長時間運行操作,否則該選項卡將掛起。 UI線程是您的控件實例化的那個線程;它是一個叫IObjectWithSite::SetSite()。你在做什麼工作?長時間運行的操作包括文件處理,HTTP請求以及任何涉及獲取任何類型的鎖的任何操作。

有關Flash如何工作的猜想也是錯誤的; Flash確實使用多個線程。

+0

但是,如果我使用活動文檔服務器,如在IE中查看.pdf文件,並且活動文檔服務器不在處理中。如果我點擊文檔中的一個按鈕,IE仍然掛起。爲什麼? – chenwq

+0

僅僅因爲某些事情不在過程中並不意味着它不會阻止。我的猜測是任何進程中的比特都被阻塞等待其他進程。 IPC很難。 –

相關問題