2010-11-27 6 views
1

私はリアルタイムソースから値を取得するRTDサーバーを持っています。問題は、ユーザーが20,000のRTD式に近いかなり大きなExcelシートを持っていることです。したがって、ユーザーがシートを開くと、すべてのRTD式が実行され、サーバーに20,000のクエリが送信されます。これは今のところ機能しますが、クエリをグループ化してサーバーに送信することができれば、サーバーのパフォーマンスは大幅に向上します。excel起動時にすべてのRTDコールをプールする方法はありますか?

私の考えはフラグを維持することでした。計算が始まると、フラグはfalseに設定され、計算が終了するとリセットされます。 RTD式が呼び出されると、フラグが設定されていない場合、私はRTDサーバーにクエリを送信せず、プールします。フラグがtrueに設定されているとき、私は、私はエクセルが起動し、計算が停止したときのように通知を取得する方法を確認していないサーバー

にプールされたクエリを結合し、それを送ることができます。助けてください。また、この問題を解決するための他のアプローチを知っているなら、それは素晴らしいことでしょう。私はExcel 2007、C#3.5を使用しています

助けてください。どうもありがとうございました。 のRashmi

おかげで、あなたはRTDを使用しているので、これが機能することができれば

+0

計算 RTDは、Excelがアイドル状態のときにデータを更新するため、Excelが手動計算モードの場合は引き続き情報を受信します。その場合には、新しいデータがキャッシュされ、手動計算が実行されたときの電流値が使用されます。 –

答えて

2

、私は疑問に思う:

あなたは定期バッチでバックエンドへの呼び出しを行います。タイマーが切れるまで、バックエンドにバッチを送った後、RTDサーバーに対して行われたすべてのコールからの仕事のバッチを構築し、短時間、多分500ミリ秒と待って - あなたが最初のRTDコールでタイマーを開始します新しいバッチをクライアントで開始します。バッチ応答が来たら、トピックが更新されたことをExcelに通知し、ExcelがRefreshDataを呼び出すと、個々のアイテムをバッチ応答から戻します。このように、バッチ処理ではRTDの非同期性が効果的に使用されますが、Excelの再計算イベントには関係しません。

希望はこれが理にかなっています。

関連する問題