OlapDataSource クラスは、データ コンシューマー (UltraPivotGrid コントロールなど) が OLAP データ サーバーと通信してインターフェイスを定義する抽象クラスです。
OLAP サーバーとの通信がクライアント要求とサーバー レスポンスによって行われるため、このクラスで公開されるほとんどのメソッド、および派生クラスは事実上非同期です。
非同期メソッドの多くは、複雑なマルチスレッド コンシューマー実装を必要としません。コンシューマーが OLAP サーバーからデータを簡単に取得できるデザイン パターンに沿ってこのクラスで公開されます。以下はこのパターンの主な機能です。
例えば、ExpandAxisTupleMemberAsync メソッドを考慮します。最初の 3 つのメソッド パラメーターはコーラーでメンバーが属す軸、展開するメンバーを含むタプルのインデックス、展開するメンバーのンデックスをそれぞれ指定できます。
更新パラメーター値を false に設定した場合、コーラーは UpdateAsync メソッドが呼び出されるまで更新を遅延します。これにより、データソースに 1 つ以上の変更が加えられた場合にバッチ形式の更新を可能にし、1 アトミック操作として複数の変更が後で適用されます。
true を更新パラメーターの値として指定した場合、要求は OLAP サーバーに直ちにディスパッチされます。要求処理時に例外がスローされた場合、DataSourceError イベントが発生してエラーをリスナーに報告します。
要求が正しく処理されて更新パラメーターの値を true に設定した場合、ExpandAxisTupleMemberAsyncCompleted イベントが発生してリスナーに処理が完了したことを通知します。
OLAP サーバーから受け取った通知は、バックグラウンド スレッドでディスパッチされます。Windows Forms コントロールはスレッド セーフではないため、プロパティへのアクセスやイベント ハンドラー コンテンツ内のコントロールでメソッドを公開した場合にクロススレッド例外が発生します。コントロールのパラメーターは、コントロールのハンドルが作成されたスレッドとして同じスレッドへ直接通知できます。これによりリスナーがスレッド境界で通知をマーシャリングする必要がなくなり、クライアント実装を更に簡素化します。