如何从任何线程更新Firefox中的状态消息?

时间:2009-06-24 09:34:13

标签: winapi firefox browser plugins npapi

我在使用插件代码更新Firefox上的状态消息时遇到了问题。

正如文档所说,调用NPN_Status只有在从主线程调用时才有效。我的要求是从Firefox进程中的任何线程更新状态。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您无法从任何线程更新它,因为这会违反某些线程安全规则。您必须将更新代理回主线程。

答案 1 :(得分:0)

就像sdwilsh所说,你只能从主线程中调用NPN_* - 函数。 NPN_PluginThreadAsyncCall仅在Gecko 1.9中引入,并且在当前所有浏览器中都不受支持。

变通方法取决于平台:

  • 在Windows子类上您的插件接收的窗口,发送/发送消息并从处理窗口进程调用该调用
  • 在Mac上使用Cocoa,你可以使用例如performSelectorOnMainThread
  • 在Mac上使用Carbon,您可以使用调用null事件的调用
  • ......等。