2010-11-27 9 views
1

J'ai un serveur RTD qui obtient les valeurs d'une source en temps réel. Le problème est que les utilisateurs ont de très grandes feuilles excel près de 20 000 formules RTD. Ainsi, lorsque l'utilisateur ouvre la feuille, toutes les formules RTD sont envoyées, ce qui entraîne l'envoi de 20 000 requêtes au serveur. Cela fonctionne pour l'instant, mais le serveur peut fonctionner beaucoup mieux si je peux regrouper les requêtes et l'envoyer au serveur.Comment regrouper tous les appels RTD au démarrage d'Excel?

Mon idée était de maintenir un drapeau. Lorsque le calcul commence, le drapeau sera mis à false, et quand le calcul se termine, je peux le réinitialiser. Lorsqu'une formule RTD est appelée, si l'indicateur n'est pas défini, je n'enverrai pas la requête au serveur RTD, mais la regrouperai. Lorsque le drapeau est mis à vrai je peux combiner les requêtes groupées et l'envoyer au serveur

Je ne suis pas sûr comment obtenir la notification comme quand excel commence et cesse de calculer. S'il vous plaît aider. Aussi, si vous connaissez une autre approche pour résoudre ce problème, ce serait génial. J'utilise Excel 2007, C# 3.5

S'il vous plaît aider. Merci beaucoup. Rashmi

Merci,

+0

Calcul Étant donné que RTD met à jour les données lorsque Excel est inactif, il continue à recevoir des informations si Excel est en mode de calcul manuel. Dans ce cas, les nouvelles données sont mises en cache et les valeurs actuelles sont utilisées lorsqu'un calcul manuel est effectué. –

Répondre

2

Puisque vous utilisez RTD, je me demande si cela pourrait fonctionner:

Vous faites des appels à l'arrière-plan par lots chronométrés. Vous démarrez une minuterie dans le premier appel RTD - un peu de temps, peut-être 500ms, puis accumuler un lot de travail à partir de tous les appels effectués sur votre serveur RTD jusqu'à ce que le minuteur expire, puis envoyer le lot au back-end et attendre le réponse, tout en démarrant un nouveau lot sur le client. Lorsque la réponse par lots arrive, vous informez Excel que les sujets ont été mis à jour et lorsque Excel appelle RefreshData, vous renvoyez les éléments individuels de votre réponse par lot. De cette façon, votre lot utilise efficacement l'async même de RTD, mais vous n'êtes pas lié aux événements de recalcul d'Excel.

Espérons que cela a du sens.

Questions connexes