如何在asp.net 4.0中执行异步任务
我是ASP.net新手,我面临异步任务的问题 这是我想做的 假设我有一个名为WebPage1的网页,上面有一个按钮1如何在asp.net 4.0中执行异步任务,asp.net,asynchronous,task-parallel-library,Asp.net,Asynchronous,Task Parallel Library,我是ASP.net新手,我面临异步任务的问题 这是我想做的 假设我有一个名为WebPage1的网页,上面有一个按钮1 protected void Button1_Click(object sender, EventArgs e) { Button1.Text = "Working...."; System.Threading.Thread.Sleep(20000); Button1.Text = "Finish !"; } 我希
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Text = "Working....";
System.Threading.Thread.Sleep(20000);
Button1.Text = "Finish !";
}
我希望能够切换到WebPage2,而不会丢失从按钮1开始的任务。因此,当我在20秒后返回WebPage1时,我应该能够在按钮上读到“Finish!”
可能吗?我强调我必须使用.net 4.0来实现这一点
我一直在看
- IAsyncResult接口
提前谢谢 首先需要导入
using System.Threading.Tasks;
那么按钮处理程序应该是这样的
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Text = "Working....";
Task.Factory.StartNew(() =>
{
//Do Stuff
});
}
您需要知道任务何时完成,以便在返回页面加载时检查它。这很可能是某种数据库值。它允许您告诉用户任务是否已完成。对于异步回发,您可以尝试使用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;
}
}
请稍候
受保护的无效btn_单击(对象发送方,事件参数e)
{
尝试
{
lblError.Visible=false;
lblError.Text=“开始”;
系统。线程。线程。睡眠(6000);
lblError.Text=“结束”;
lblError.Visible=真;
}
捕获(例外情况除外)
{
lblError.Text=ex.消息;
lblError.Visible=真;
}
}
FYI: