考虑以下两个按钮点击事件,我想输出cancel_click事件来停止hellotest_click事件的过程并重定向
protected async void hellotest_click(object sender, EventArgs e)
{
await Task.Run(() => hello1());
await Task.Run(() => hello2());
}
//if i click another button , say
protected async void cancel_click(object sender, EventArgs e)
{
Response.Redirect(Request.Url.GetLeftPart(UriPartial.Authority) + "/trial/main.aspx", false);
Context.ApplicationInstance.CompleteRequest();
}
// i want the output cancel_click event to stop the process of hellotest_click event and redirect.
答案 0 :(得分:0)
不幸的是,我不认为这在一般情况下是可能的。想象一下,您的项目与SO一样大,您使用许多服务器的农场来处理用户。不同的点击次数可能很容易到达不同的服务器。
我能想象的任何解决方案要么不是那么简单,要么不能正常工作,例如,如果用户有多个标签。
你可以做的最好的事情可能是
介绍一些后台执行服务
介绍一些正在执行的任务的注册表
立即将新创建的任务的ID返回给浏览器 显示一些进展UI
定期在某个时间间隔询问服务器完成任务
当用户点击取消时,将任务的ID传递给服务器 要求您的服务停止按ID执行该任务。