2011-06-28 10 views
0

再帰で収集する必要がある情報が必要です。 は、私は、次の再帰とWPFアプリケーションを持っている:Silverlight非同期再帰

public static int GetClusterTotalDocumentsCount(ref int count, int clusterID, int lastrunid) 
     { 

      List<Cluster> subclusters = DBHandler.GetSubClustersOperational(clusterID); 
      if (subclusters.Count == 0) 
       return count; 

      foreach (Cluster subclutser in subclusters) 
      { 
       int temp = DBHandler.GetClusterDocumentsCount(subclutser.ID, 0); 
       count += temp; 
       GetClusterTotalDocumentsCount(ref count, subclutser.ID, 0); 
      } 

      return count; 

     } 

は今、私は同じシルバーで行うことにしたいです。 ADO.netを使用する代わりに、データのWCFサービスを使用しています。問題は、呼び出しが非同期であるため、この再帰を使用できないことです。何か案は?

答えて

2

あなたのソリューションについて考えてみましょう。再帰的リモート操作が必要ですか?これは、階層内の各クラスタのサーバーへの個別のラウンドトリップを意味します。単純にトータルと再帰を返すサービス操作を作成することは、その操作の中でサーバー側で行われますか?

編集:

Btw。再帰的に(そして順番に)データベースクエリを実行することも間違ったアプローチです。 SQL Server 2005以降では再帰クエリがネイティブにサポートされているため、CTE(共通テーブル式)を使用して単一のストアドプロシージャで呼び出しをラップして、データベースへの1回のラウンドトリップで再帰クエリを実行する必要があります。

関連する問題