请等待工作线程完成,然后再销毁NPAPI插件



我已经编写了一个无窗口的NPAPI插件,我将在web浏览器JavaScript调用的插件函数中执行一些持久的操作(例如,发送带有图像数据的http post请求)。

为了防止web浏览器挂起,我为每个冗长的操作创建一个工作线程。

我的问题是,如果浏览器关闭,而仍有工作线程在运行,如何防止我的插件实例在工作线程完成之前被销毁(在NPP_Destroy?)?

对于ActiveX控件,我只需在每次启动/完成工作线程时添加/释放插件实例的引用计数。但对于NPAPI插件,引用计数仅针对NPObject(通过NPN_CreateObject创建),而不是插件实例本身。现在我感到困惑。

如有任何帮助,我们将不胜感激。

你不能。我想你可以启动另一个流程并执行其中的操作;这样,当插件关闭时,你可以向它发送一个信号,并说"你需要关闭,当你准备好了",但在它完成之前不要关闭它。

插件本身——即使在IE中——你也无法控制它何时关闭,因为如果浏览器关闭,它无论如何都会关闭所有插件。

欢迎来到插件之地——你无法控制生命周期。

最新更新