如果我有一个大规模的进程运行以响应用户点击它将继续运行,如果他们关闭页面?

时间:2009-10-06 21:00:19

标签: asp.net

如果他们在通过页面上的按钮启动进程后关闭浏览器页面,该进程是否会一直运行直到完成或者它会死掉?如果是这样我怎么能让它安全死?

2 个答案:

答案 0 :(得分:4)

页面将继续处理。如果要终止处理,可以检查HttpResponse.IsClientConnected属性并在客户端不再连接时结束处理。

来自MSDN的示例:

private void Page_Load(object sender, EventArgs e)
{

    // Check whether the browser remains
    // connected to the server.
    if (Response.IsClientConnected)
    {
        // If still connected, redirect
        // to another page. 
        Response.Redirect("Page2CS.aspx", false);
    }
    else
    {
        // If the browser is not connected
        // stop all response processing.
        Response.End();
    }
}


但是,假设能够检查财产。如果您进行长时间运行的同步呼叫,那么您将无法检查该属性。如果是这种情况,您可以异步执行它或将长时间运行的调用分解为单独的较小调用,您可以在进一步处理之前检查状态。

答案 1 :(得分:1)

我想说,这完全取决于流程以及您如何编写解决方案。

但根据我的经验,浏览器和服务器之间没有直接连接。它通过使用会话状态进行模拟。所以一旦这个过程开始,我会说是的,它将一直持续到它将响应发送回客户端。无论客户是否在那里接收它都是另一回事。