2014-04-18 39 views
2

我是ASP.net的新手,我面臨異步任務的問題。如何在asp.net 4.0中執行異步任務

這是我想要做的。

比方說,我有一個網頁名爲WebPage1與按鈕Button1。

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button1.Text = "Working...."; 
     System.Threading.Thread.Sleep(20000); 
     Button1.Text = "Finish !"; 
    } 

我希望能夠切換到WebPage2不失我開始按鈕1.任務所以,當我回到網頁120秒後,我應該能夠閱讀「完成!」在按鈕上。

可能嗎?我強調,我與做到這一點.NET 4.0

我已經alread一直在尋找

,但我可以」 t想辦法解決我的問題

在此先感謝!

+0

FYI:https://github.com/StephenCleary/AspNetBackgroundTasks – Noseratio

回答

2

首先您需要導入。

using System.Threading.Tasks; 

然後你的按鈕處理程序應該看起來像這樣。

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button1.Text = "Working...."; 
     Task.Factory.StartNew(() => 
     { 
       //Do Stuff 
     }); 
    } 

你需要有一定的方式,當任務完成後要知道,這樣你可以檢查它,當您在頁面加載時返回。這很可能是某種數據庫的值。它可以讓你告訴用戶任務是否完成。

0

對於異步回發,您可以嘗試使用updatepanel來實現此功能。

下面是一個簡單的例子,你可以參考一下:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<asp:UpdatePanel ID="Updt1" runat="server"> 
     <ContentTemplate> 
      <asp:Label ID="lblError" runat="server" Text="Label"></asp:Label> 
      <asp:Button ID="btn" runat="server" Text="Click Update" onclick="btn_Click"/> 
      <asp:UpdateProgress ID="UpdtProgress" DisplayAfter="1" AssociatedUpdatePanelID="Updt1" runat="server"> 
       <ProgressTemplate> 
        Please Wait 
       </ProgressTemplate> 
      </asp:UpdateProgress> 
     </ContentTemplate> 
    </asp:UpdatePanel> 


protected void btn_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       lblError.Visible = false; 
       lblError.Text = "Start"; 
       System.Threading.Thread.Sleep(6000); 
       lblError.Text = "End"; 
       lblError.Visible = true; 
      } 
      catch (Exception ex) 
      { 
       lblError.Text = ex.Message; 
       lblError.Visible = true; 
      } 

     }