Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Rendre asynchrone une partie de code ?

Envoyé par : vivelapsp

Date : 15/06/2009 11:44

Bonjour,

Mon extension fait appel a un programme externe qui peut tourner pendant plusieurs dizaines de minutes via ce code :

var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
var args = ''
process.run(false, args, args.length);

J'aimerais qu'un message s'affiche à la fin de l'execution de ce code, pour cela je peut par exemple passer en argument a la methode run true pour lancer la fonction de maniere synchrone puis ensuite afficher mon message. Seulement tout se bloque en attendant (normal..).

Donc j'aimerais savoir comment je pourrais executer du code (pour afficher un message par exemple) a la fin de l'execution du processus sans pour autant bloquer l'application en attendant.

Merci d'avance pour vos réponses.

# Re: Rendre asynchrone une partie de code ?

Envoyé par : thefab

Date : 16/06/2009 10:30

Je ne crois pas que ça soit possible. Tu peux passer le premier argument de la méthode run() a true pour rendre la méthode asynchrone mais il n'y a pas de moyen d'être notifié à la fin de l'exécution (pas entièrement sur).

Mais c'est possible avec nsIProcess2 (FF 3.5)

# Re: Rendre asynchrone une partie de code ?

Envoyé par : vivelapsp

Date : 16/06/2009 10:39

D'accord, merci pour ta réponse.

J'ai contourné le probleme via un setInterval de 5 secondes...pas tres optimisé mais bon... Je vérifie la fin de l'execution de mon bout de code en verifiant l'existance du fichier que l'execution doit créer. J'aurais préféré utiliser l'attribut "isRunning", mais chez moi cela ne fonctionne pas (pourquoi ?).

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.