0

プラグインコードからFirefoxのステータスメッセージを更新する際に問題が発生しました。

ドキュメントに記載されているように、呼び出しNPN_Statusはメインスレッドから呼び出された場合にのみ機能します。私の要件は、Firefoxプロセス内の任意のスレッドからステータスを更新することです。

どんな助けでもいただければ幸いです!

4

2 に答える 2

1

一部のスレッドセーフルールに違反するため、どのスレッドからも更新できません。更新をメイン スレッドにプロキシする必要があります。

于 2009-06-24T14:25:00.540 に答える
0

sdwilsh が言ったように、NPN_*関数はメイン スレッドからのみ呼び出す必要があります。NPN_PluginThreadAsyncCallは Gecko 1.9 でのみ導入され、現在のすべてのブラウザーでサポートされているわけではありません。

回避策はプラットフォームによって異なります。

  • Windows では、プラグインが受け取るウィンドウをサブクラス化し、それにメッセージを投稿/送信し、処理ウィンドウ プロセスから呼び出しを呼び出します。
  • Cocoaを搭載したMacでは、たとえば使用できますperformSelectorOnMainThread
  • Carbon を搭載した Mac では、null イベントで呼び出しを呼び出すことができます
  • ...など
于 2009-12-22T09:03:04.723 に答える