为什么我的ActiveX冻结了IE Tab,但其他像flash这样的东西不?

时间:2012-06-26 08:15:52

标签: multithreading flash internet-explorer activex

通过引用Another Question About ActiveX freezes IE,我写了一个像作者那样的Active,当activex做某事时,整个IE都冻结了。无法选择其他选项卡,也无法关闭选项卡中的activex。

我知道我可以编写一些线程代码来完成这项工作。但是,我的问题是,像Flash或Silverlight这样的其他activex,它们如何解决?我不相信他们做的所有工作都是异步的,也许他们把所有的工作都做得很短,所以我们从来没有注意到延迟?

欢迎任何建议。感谢。

1 个答案:

答案 0 :(得分:0)

您无法在IE的UI线程上执行长时间运行操作,否则选项卡将挂起。 UI线程是您的控件实例化的线程;它是一个调用IObjectWithSite::SetSite()的人。你在做什么工作?长时间运行的操作包括文件处理,HTTP请求以及涉及获取任何类型锁的任何内容。

关于Flash如何工作的猜想也是错误的; Flash确实使用多个线程。