nsIThreadManager
たぶんいままでの書き方が間違ってた。
nsIThreadのインターフェイスが変わってた。frozenじゃなかったのか。
Interface Reference - nsIThread
nsIThread - MDC
pthreadに似てたスレッド作ってinitしてrunっていうインターフェイスから、スレッドつくってそれのproxyを作ってrunを呼ぶというややこしいやり方に。
sunbird/js/calWcapUtils.js - Google Code Search
get proxy() { if (!this.m_proxy) { var eventTarget = null; try { var eventQueueService = Components.classes["@mozilla.org/event-queue-service;1"] .getService(Components.interfaces.nsIEventQueueService); eventTarget = eventQueueService.createThreadEventQueue( Components.classes["@mozilla.org/thread;1"] .createInstance(Components.interfaces.nsIThread), true); } catch (exc) { // eventQueue has vanished on trunk: var threadManager = Components.classes["@mozilla.org/thread-manager;1"] .getService(Components.interfaces.nsIThreadManager); eventTarget = threadManager.newThread(0); } var proxyMgr = Components.classes["@mozilla.org/xpcomproxy;1"] .getService(Components.interfaces.nsIProxyObjectManager); this.m_proxy = proxyMgr.getProxyForObject( eventTarget, Components.interfaces.nsIRunnable, this, Components.interfaces.nsIProxyObjectManager.INVOKE_ASYNC ); } return this.m_proxy;
Threading in Gecko 1.9 — Richard Crowley’s blog
に今までなかんじで呼ぶ方法が書かれているのを発見。どうかな。
flickrのひとらしい。Windowsのflickr uploadrがxulrunnerでできてたけどこの人が作ったとかか。このbanzaiっていうthemeいいな。