nsIThreadObserver

nsIThreadObserver インタフェースを実装すると、オブザーバが階層化されたイベントキューを実装できます。

例えば、以下のようにして、GUI ツールキットのために処理中のイベントを、あるスレッドのイベントの上に重ね合わせることができます。

var NativeQueue;
Observer = {
  onDispatchedEvent(thread) {
    NativeQueue.signal();
  }
  onProcessNextEvent(thread, mayWait, recursionDepth) {
    if (NativeQueue.hasNextEvent()) {
      NativeQueue.processNextEvent();
    }
    while (mayWait && !thread.hasPendingEvent()) {
      NativeQueue.wait();
      NativeQueue.processNextEvent();
    }
  }
};
警告: このインタフェースの実装はスレッドセーフでなければなりません。

継承元: nsISupports


Please add a summary to this article.
  最終更新: Gecko 1.9 (Firefox 3)

メソッドの概要

void onDispatchedEvent(in nsIThreadInternal thread);
void onProcessNextEvent(in nsIThreadInternal thread, in boolean mayWait, in unsigned long recursionDepth);
void afterProcessNextEvent(in nsIThreadInternal thread, in unsigned long recursionDepth);

メソッド

onDispatchedEvent()

イベントがスレッドに割り当てられた後に呼び出されます。このメソッドはどのスレッドからも呼び出すことができます。

註: このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。

void onDispatchedEvent(
  in nsIThreadInternal thread
)
引数
<tt>thread</tt>
イベントが割り当てられた nsIThread

onProcessNextEvent()

イベントが処理される前に、nsIThreadprocessNextEvent() メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。

註: このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。

void onProcessNextEvent(
  in nsIThreadInternal thread,
  in boolean mayWait,
  in unsigned long recursionDepth

);

引数
<tt>thread</tt>
イベントの処理が行われている nsIThread
<tt>mayWait</tt>
スレッドの呼び出しをブロックすることをメソッドに許可する場合は true。この引数は、例えばスレッド停止中などは false になります。
<tt>recursionDepth</tt>
現在の呼び出しに加えて、呼び出しスタック上での ProcessNextEvent() の呼び出し回数。

afterProcessNextEvent()

イベントが処理された後に、nsIThreadprocessNextEvent() メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。

註: このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。

void afterProcessNextEvent(
  in nsIThreadInternal thread,
  in unsigned long recursionDepth
)
引数
<tt>thread</tt>
イベントの処理が行われた nsIThread
<tt>recursionDepth</tt>
現在の呼び出しに加えて、呼び出しスタック上での ProcessNextEvent() の呼び出し回数。

関連記事

ドキュメントのタグと貢献者

 このページの貢献者: teoli, Kohei
 最終更新者: teoli,