Annuler un long traitement

Posté par Helenea le 5/6/2008 15:59:35
Bonjour,

J'ai une application qui fait du traitement statistique sur des données issues d'une base oracle.

Ce traitement pouvant prendre du temps, je souhaiterais que lorsque l'on appuie sur la touche "Echap", le calcul des statistiques soit annulé.

J'ai d'abord procédé de la manière suivante :

A chaque début de boucles je mettais le couche "Si ToucheEnfoncée(teEchap) alors ..."

Cela ne fonctionnait pas. J'ai ensuite déclaré une variable globale gb_Stop et créé une fonction timé (tous les 50 centièmes de secondes) qui avait pour but de mettre la variable gb_Stop à vrai si ToucheEnfoncee(teEchap) était à vrai.

Cela semble fonctionner quand ça en a envie. j'ai voulu abaisser le temps entre chaque appel mais ce n'est pas mieuix.

J'ai ensuite voulu utiliser les timersys avec ma fonction plutôt que de la laisser en exécution automatique. Je n'ai pas eu plus de résultat.

Ma dernière tentative était décrire le code suivant dans le code d'intialisation de ma fenêtre
ge_Evenement = Evénement("plInterrompsCalcul",".*",256


Voici le contenu de ma procédeure locale
PROCEDURE plInterrompsCalcul(lPMessage,pwParam,lPlParam)

SI EnModeTest() ALORS Trace("touche appuyée : " + pwParam)

SI pwParam = VK_ESCAPE ALORS
	SI EnModeTest() ALORS Trace("Appuie sur la touche Echap")
	gb_Stop = Vrai	
FIN


j'ai aussi essayer l'ajout de l'évenement "Touche enfoncée" et "Touche relâchée" mais sans davantage de succès.

Note : je peux utiliser VK_ESCAPE car j'ai mis en initialisation de projet :
EXTERNE "KeyConst.wl"


Si jamais vous aviez quelques chose à me proposer, je suis preneuse.

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=5882&post_id=23794