2011-08-06 247 views
0

我有一個需求,在該需求中我必須開發一個頁面,該頁面在通過JavaScript調用的服務器上運行服務。現在我還需要顯示正在完成的工作的更新(例如完成%)。ASP.NET異步Web服務調用問題

這是我的代碼結構。

[WebMethod (true)] 
    //Below method takes around 5-10 minutes in execution 
    public string[] GenerateXMLSiteMap() 
    { 
     SiteMapGenerator siteMapGen = new SiteMapGenerator(); 
     siteMapGen.SiteMapNodeAddedSuccessfully += new SiteMapNodeAdded(siteMapGen_SiteMapNodeAddedSuccessfully); 
     siteMapGen.GenerateSiteMap(); 

     return GetStats(); 
    } 

    void siteMapGen_SiteMapNodeAddedSuccessfully(string[] infos) 
    { 
     Session["CurrentPage"] = infos[0]; 
     Session["PageScanned"] = infos[1]; 
     Session["Time"] = infos[2]; 
    } 

    [WebMethod (true)] 
    public string[] GetStats() 
    { 
     string[] stats = new string[4]; 
     if (Session["CurrentPage"] != null) 
     { 
      stats[0] = Session["LinkDepth"].ToString(); 
      stats[1] = Session["CurrentPage"].ToString(); 
      stats[2] = Session["Time"].ToString(); 
     } 

     return stats; 
    } 

我從客戶端調用GetStats()方法,但它永遠不會被調用。我想它是因爲我正在調用仍在執行的GenerateXMLSiteMap()。誰能告訴我如何以這種方式獲得靜力。

回答