Bonjour,

J'ai une extension pour Firefox qui utilise un XPCOM. L'extension marche bien avec Firefox 3.6. Je travaille maintenant pour la rendre compatible avec Firefox 4, en suivant les articles:
Making your add on compatible with firefox 4
XPCOM changes in Gecko 2.0


Apr�s avoir recompiler le composant XPCOM avec Gecko 2.0 et adapt� mon fichier chrome.manifest pour enregistrer mon composant, l'extension se lance maintenant correctement.

Cependant j'ai encore un probl�me. Mon composant ex�cute une fonction qui met quelques secondes � s'ex�cuter. Afin de ne pas freezer l'interface, j'ex�cutais, dans Firefox 3.6 cette fonction dans un thread s�parer de la mani�re suivante:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    var MyComponent = Components.classes["@foo/example_cpp;1"]
                         .getService(Components.interfaces.nsIMyComponent);
 
    var backgroundTask = {
          callback: {
                result: 0,
                run: function() {
                      processResult(this.result);
                }
          },
          run: function() {
                this.callback.result = MyComponent.myFunction();
                //dispatch event back to the main thread
                threadMngr.mainThread.dispatch(this.callback, thread.DISPATCH_NORMAL);
          }
    }
 
    var thread = threadMngr.newThread(0);
    thread.dispatch(backgroundTask, thread.DISPATCH_NORMAL);
Cela marchait bien. Cepandant, avec Gecko 2, des choses ont chang� en ce qui concerne the Thread Manager et il n'est plus possible de faire cela.

While these interfaces still exist in Firefox 4, it is no longer possible to transfer JavaScript objects or functions from one thread to another in Gecko 2.0, making event dispatch to any thread but the current impossible from JavaScript. Consider using a ChromeWorker instead; it's not a perfect replacement but may work for you. (here)
J'ai donc regarder du c�t� de ChromeWorker mais je ne suis pas parvenu a pass� mon composant au "worker". Est-ce possible de le faire?

Ou peut-�tre existe-t-il une autre solution afin de ne pas freezer l'interface?

Merci d'avance pour toute id�e