通过引用Another Question About ActiveX freezes IE,我写了一个像作者那样的Active,当activex做某事时,整个IE都冻结了。无法选择其他选项卡,也无法关闭选项卡中的activex。
我知道我可以编写一些线程代码来完成这项工作。但是,我的问题是,像Flash或Silverlight这样的其他activex,它们如何解决?我不相信他们做的所有工作都是异步的,也许他们把所有的工作都做得很短,所以我们从来没有注意到延迟?
欢迎任何建议。感谢。
答案 0 :(得分:0)
您无法在IE的UI线程上执行长时间运行操作,否则选项卡将挂起。 UI线程是您的控件实例化的线程;它是一个调用IObjectWithSite::SetSite()
的人。你在做什么工作?长时间运行的操作包括文件处理,HTTP请求以及涉及获取任何类型锁的任何内容。
关于Flash如何工作的猜想也是错误的; Flash确实使用多个线程。