Appel d'API en laissant la main à l'utilisateur - VB/VBA/VBS - Programmation
Marsh Posté le 10-09-2003 à 09:08:18
Mets le traitement dans un thread
Marsh Posté le 10-09-2003 à 10:05:16
Le problème est que le multithreading en VB, même par les API n'est pas un modèle de fiabilité...
Marsh Posté le 10-09-2003 à 10:07:43
Kyle_Katarn a écrit : Le problème est que le multithreading en VB, même par les API n'est pas un modèle de fiabilité... |
Comme tout ce qui est en VB
de toute façon c'est le seul moyen....
Marsh Posté le 10-09-2003 à 10:33:17
Poipoi a écrit : |
Faux. Un DoEvents bien placé (en fin de traitement DANS la boucle) permet de laisser la main à windows.
Marsh Posté le 10-09-2003 à 10:38:57
karlkox a écrit : |
quand C une API qui fait le traitement ?
DTC
Marsh Posté le 10-09-2003 à 11:26:55
j'ai répondu un peu trop vite, j'avais pas lu la deuxième partie de son problème ...
Marsh Posté le 10-09-2003 à 19:29:46
OK merci pour les réponses...
Donc à priori c le thread la solution, par contre c relativement facile à mettre en oeuvre ou c plutôt galère ? J'ai des pbs de temps et j'ai pas envie de me lancer dans une aventure sans fin !
Citation : Le problème est que le multithreading en VB, même par les API n'est pas un modèle de fiabilité... |
C cool ça met en confiance !
Marsh Posté le 09-09-2003 à 11:11:05
Bonjour à tous,
Pour une appli en VBA sous Excel permettant de lancer des traitements (sur des cubes Essbase pour info), je fais appel à l'API fourni par Hyperion. Tout fonctionne sans problème, sauf que les traitements étant particulièrement long j'aimerai que les utilisateurs puissent garder la main alors que pour l'instant Excel est en attente de l'API et empêche tout travail sous Excel que ce soit sur le fichier avec le script VBA ou sur tout autre fichier.
Actuellement mon code :
l'API simplifiée sont des fonctions que j'ai créé qui regroupe des commandes de l'API. Par exemple ici ModifierValeurVariable :
Mais bon ceci ne doit pas avoir d'importance ici je pense.
Pour info, tout le traitement a lieu sur le serveur donc le poste client est à 0% au niveau charge processeur, il n'y a donc aucun soucis de ce côté là. J'ai pensé à mettre des DoEvents le problème étant que c une ligne unique ("sts = EsbCreateVariable(apihctx, oVariable)" dans l'exemple ci-dessus) sur laquelle il bloque.
Voila si vous pouviez m'aiquiller vers la bonne direction, je vous en serais bien reconnaissant !
Merci !