asp.net enquanto o processamento da primeira solicitação permite a segunda solicitação ao clicar

No aplicativo Asp.net Web Form, tenho o botão Gerar relatório e um botão Cancelar para cancelar o processo de geração de relatórios, se demorar muito.

Quando clico em Gerar relatório, ele executa a tarefa pesada, depois de 3 segundos, tento cancelar essa tarefa pesada clicando no botão Cancelar.

Mas o código do lado do servidor para o clique no botão Cancelar é chamado após algum tempo.

Eu até tenteiwindow.stop() noJavaScript para interromper o carregamento da página e pressionar o código do servidor rapidamente, mas ainda assim, existe um atraso.

Código:

protected void btnExportExcel_Click(object sender, EventArgs e)
{

// Doing Heavy Task to Generate Report

}


protected void btnCancel_Click(object sender, EventArgs e)
{
    if (Response.IsClientConnected)
    {

       HttpContext.Current.ApplicationInstance.CompleteRequest();

    }
}     

  <asp:Button ID="btnCancel" runat="server" Text="Cancel Request" 

  OnClientClick="return StopPageLoading();" OnClick="btnCancel_Click" />


 function StopPageLoading() {

     try
     {
       window.stop();
     } catch (exception) 
     {
       document.execCommand('Stop'); // for IE and other browsers
     }

  }

Como posso permitir iniciar outra solicitação com um clique rápido, enquanto a solicitação atual está em processamento?

Como permitirUI ser responsivo?

Atualizar:

Para reproduzir a situação:

Clico em Exportar para o Excel, leva 7 minutos para processar.Enquanto ainda estou processando, clico no botão Cancelar, leva mais 5 minutos para cancelar.

Eu li queSolicitação simultânea não é possível no Asp.NET porque o estado da sessão cria bloqueios exclusivos.

Então, como cancelar rapidamente?

Vai fazer meus métodosasync ajudar a superar o problema de bloqueios exclusivos do estado da sessão?

questionAnswers(4)

yourAnswerToTheQuestion