Compartilhar via


Operação assíncrona

O tempo necessário para um aplicativo acessar um recurso da Internet depende de vários fatores, como a conexão que está sendo usada, o servidor no qual o recurso está localizado e o número de usuários que tentam acessar o recurso. Para aplicativos que baixam vários recursos ou lidam com várias tarefas (incluindo um ou mais downloads), aguardar cada download ser concluído antes de passar para a próxima tarefa pode ser extremamente ineficiente. Para diminuir o tempo que um aplicativo precisa esperar, muitas das funções WinINet podem operar de forma assíncrona.

No modo assíncrono, um aplicativo pode executar qualquer função que inclua um valor de contexto como um de seus parâmetros e pode continuar a executar outros comandos ou funções enquanto o aplicativo aguarda a função concluir sua tarefa. Enquanto a tarefa está sendo concluída, uma função de retorno de chamada status fornecida pelo aplicativo é notificada sobre o progresso da tarefa e quando ela é concluída. Neste momento, a função de retorno de chamada status pode chamar outras funções ou executar quaisquer outras tarefas necessárias que dependessem da conclusão da tarefa.

Não há nenhuma afinidade de thread de retorno de chamada quando você chama WinINet de forma assíncrona: uma chamada pode começar de um thread, mas qualquer outro thread pode receber o retorno de chamada.

Benefícios

Há vários benefícios em operar de forma assíncrona. Por exemplo:

  • Baixando vários recursos da Internet simultaneamente.

    Você pode se conectar a vários recursos da Internet ao mesmo tempo e baixá-los conforme eles ficam disponíveis.

  • Aumentando o desempenho do aplicativo.

    Um aplicativo que usa as funções WinINet de forma assíncrona não precisa aguardar até que a solicitação seja concluída, portanto, o aplicativo é livre para realizar outras tarefas que não dependem da solicitação, melhorando assim o desempenho geral do aplicativo.

  • Monitore o progresso do download.

    A função de retorno de chamada status recebe notificações enquanto processa uma solicitação. Se necessário, seu aplicativo pode usar as informações fornecidas por esse status função de retorno de chamada para manter o usuário informado sobre o progresso da operação ou interromper solicitações que estão demorando muito para serem concluídas.

Cenários

Digamos que seu aplicativo precise baixar os preços do café do Tea de Café & de Queda e dos sites do Fourth Coffee e comparar os preços. O site do Fourth Coffee geralmente tem um tempo de resposta mais lento, portanto, seu aplicativo deve baixar as informações do Tea de Café & de Queda primeiro.

Duas versões do aplicativo são desenvolvidas. Um funciona de forma síncrona, primeiro baixando os preços do site do Chá de Café & Desabilitar e, em seguida, os preços do site fourth coffee. O segundo funciona de forma assíncrona, enviando solicitações para ambos os sites e baixando os preços quando eles ficam disponíveis.

A tabela a seguir ilustra o que aconteceria se o site do Fourth Coffee fosse mais rápido em um dia específico.

Evento Versão síncrona Versão assíncrona
Iniciar Enviar solicitação para o Chá de Café & de Queda Enviar solicitações para o Chá de Café & de Queda e o Quarto Café
Solicitação da versão assíncrona para o Fourth Coffee concluída Aguardando Baixar os preços do Fourth Coffee
Solicitação para o Chá de Café & de Queda concluído Baixar os preços do Chá de Café & Desescala Baixar os preços do Chá de Café & Desescala
Após a queda, os preços do Coffee & Tea são baixados Enviar solicitação para o Fourth Coffee Comparar preços
Comparação da versão assíncrona concluída Aguardando Operação concluída
Solicitação da versão síncrona para o Fourth Coffee concluída Baixar os preços do Fourth Coffee n/d
Depois que os preços do Fourth Coffee forem baixados Comparar preços n/d
Comparação da versão síncrona concluída Operação concluída n/d

 

Outro exemplo seria um navegador da Web, como o Microsoft Internet Explorer. Quando o navegador baixa uma página, ele geralmente precisa baixar outros recursos, como imagens e arquivos de som. No modo assíncrono, a página e seus recursos associados podem ser solicitados simultaneamente e baixados conforme ficam disponíveis, em vez de solicitar e baixar a página e cada recurso de cada vez.

Veja a seguir links relacionados.

Tutoriais

Funções necessárias para configurar a operação assíncrona

Funções que podem ser usadas de forma assíncrona

Observação

As funções FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile e FtpRenameFile usam o valor de contexto fornecido na chamada para a função InternetConnect .

 

Observação

O WinINet não dá suporte a implementações de servidor. Além disso, ele não deve ser usado de um serviço. Para implementações ou serviços de servidor, use Os Serviços HTTP do Microsoft Windows (WinHTTP).