2014-04-18 43 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; 
      } 

     }