2011-06-28 136 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; 

     } 

現在我想在Silverlight做相同。而不是使用ADO.net我正在使用數據的WCF服務。問題是,調用現在是異步的,所以我不能使用這個遞歸。有任何想法嗎?

回答

2

想想你的解決方案 - 你想遞歸的遠程操作?這意味着對於層次結構中的每個羣集,單獨往返服務器!如果創建服務操作,只需返回總數和遞歸,那麼在該操作中服務器端仍然會佔用一席之地嗎?

編輯:

Btw。在遞歸中(和按順序)做數據庫查詢也是錯誤的方法。 SQL Server 2005和更新版本地支持遞歸查詢,因此您應該檢查它們並使用CTE(公用表表達式)將單個存儲過程中的調用包裝爲單向往返數據庫的遞歸查詢。