PageAsyncTasks vs. Páginas Assíncronas


Uma pergunta muito pertinente que me fizeram durante a palestra, mais precisamente quando estava falando sobre as páginas assíncronas, é se é ou não possível definir um timeout para a execução da mesma.

Desta forma apenas, não. Para isso, você deve utilizar as chamadas Tarefas Assíncronas. Basicamente ela tem o mesmo conceito das páginas assíncronas, mas permite a definição/suporte de timeout (em segundos), propagação do contexto de segurança para as chamadas assíncronas e, finalmente, a possibilidade de execução paralela das tarefas (pois podemos adicionar N tarefas em cada página).

Abaixo segue a implementação básica desta funcionalidade:

<%@ Page Async=”true” AsyncTimeout=”15″ … %>

protected void Page_Load(object sender, EventArgs e)
{
    this.RegisterAsyncTask(
        new PageAsyncTask(
            new BeginEventHandler(Inicio),
            new EndEventHandler(Fim),
            new EndEventHandler(ExcedeuTimeout),
            null,
            true)); //Processamento paralelo (default é false)

    this.ExecuteRegisteredAsyncTasks();               
}

private IAsyncResult Inicio(object sender, EventArgs e, AsyncCallback callback, object state) { }

private void Fim(IAsyncResult result) { }

private void ExcedeuTimeout(IAsyncResult result) { }

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s