nsIThreadObserver
出典: MDC
この記事は Firefox 3 の新機能について述べています
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
目次 |
nsIThreadObserver は xpcom/threads/nsIThreadInternal.idl で定義されています。これは scriptable で
非凍結です。 (Mozilla 1.9から更新されていません)
[編集] メソッドの概要
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 )
[編集] 引数
- thread
- イベントが割り当てられた
nsIThread。
[編集] onProcessNextEvent()
イベントが処理される前に、nsIThread の processNextEvent() メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。
註: このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。
void onProcessNextEvent( in nsIThreadInternal thread, in boolean mayWait, in unsigned long recursionDepth
);
[編集] 引数
- thread
- イベントの処理が行われている
nsIThread。 - mayWait
- スレッドの呼び出しをブロックすることをメソッドに許可する場合は
true。この引数は、例えばスレッド停止中などはfalseになります。 - recursionDepth
- 現在の呼び出しに加えて、呼び出しスタック上での
ProcessNextEvent()の呼び出し回数。
[編集] afterProcessNextEvent()
イベントが処理された後に、nsIThread の processNextEvent() メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。
註: このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。
void afterProcessNextEvent( in nsIThreadInternal thread, in unsigned long recursionDepth )
[編集] 引数
- thread
- イベントの処理が行われた
nsIThread。 - recursionDepth
- 現在の呼び出しに加えて、呼び出しスタック上での
ProcessNextEvent()の呼び出し回数。
[編集] 関連記事
カテゴリ: Firefox 3 | Interfaces | Threads