在NPAPI插件被销毁之前等待工作线程完成

时间:2013-11-25 08:04:20

标签: multithreading npapi browser-plugin

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

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

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

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

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

你做不到。我想你可以启动另一个进程并执行其中的操作;这样你就可以在插件关闭时向它发送一个信号并说“你需要关闭,当你准备就绪”但不要让它关闭直到它完成。

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

欢迎使用插件 - 您无法控制生命周期。