Partilhar via


Operação assíncrona

O tempo que um aplicativo leva para 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), esperar que cada download seja concluído antes de passar para a próxima tarefa pode ser extremamente ineficiente. Para diminuir a quantidade de tempo que um aplicativo tem que 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 que a função conclua sua tarefa. Enquanto a tarefa está sendo concluída, uma função de retorno de chamada de status fornecida pelo aplicativo é notificada sobre o progresso da tarefa e quando ela foi concluída. Neste momento, a função de retorno de chamada de status pode chamar outras funções ou executar quaisquer outras tarefas necessárias que dependiam da conclusão da tarefa.

Não há afinidade de thread de retorno de chamada quando você chama WinINet de forma assíncrona: uma chamada pode começar a partir 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:

  • Download simultâneo de vários recursos da Internet.

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

  • Aumentar o desempenho da sua aplicação.

    Um aplicativo usando as funções WinINet de forma assíncrona não precisa esperar até que a solicitação seja concluída, portanto, o aplicativo é livre para fazer 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 de status recebe notificações enquanto processa uma solicitação. Se necessário, seu aplicativo pode usar as informações fornecidas por essa função de retorno de chamada de status para manter o usuário informado sobre o progresso da operação ou para 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é dos sites Downfall Coffee & Tea e Fourth Coffee e comparar preços. O site Fourth Coffee geralmente tem um tempo de resposta mais lento, então seu aplicativo deve baixar as informações do Downfall Coffee & Tea primeiro.

Duas versões do aplicativo são desenvolvidas. Trabalha-se de forma síncrona, primeiro baixando os preços do site Downfall Coffee & Tea e, em seguida, os preços do site Fourth Coffee. O segundo funciona de forma assíncrona, enviando pedidos para ambos os sites e baixando os preços quando estiverem disponíveis.

A tabela a seguir ilustra o que aconteceria se o site do Quarto Café fosse mais rápido em um determinado dia.

Evento Versão síncrona Versão assíncrona
Início Enviar pedido para Downfall Coffee & Tea Enviar pedidos para Downfall Coffee & Tea e Fourth Coffee
Solicitação da versão assíncrona para o Fourth Coffee concluída À espera Baixe os preços do Fourth Coffee
Pedido de Downfall Coffee & Tea concluído Baixar preços de Downfall Coffee & Tea Baixar preços de Downfall Coffee & Tea
Depois de Downfall Coffee & Tea os preços são baixados Enviar pedido para Fourth Coffee Comparar preços
Comparação de versões assíncronas concluída À espera Operação concluída
Solicitação da versão síncrona para o Fourth Coffee concluída Baixe os preços do Fourth Coffee n/a
Depois que os preços do Fourth Coffee são baixados Comparar preços n/a
Comparação de versões síncronas concluída Operação concluída n/a

 

Outro exemplo seria um navegador da Web como o Microsoft Internet Explorer. Quando o navegador baixa uma página, 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 à medida que ficam disponíveis, em vez de solicitar e baixar a página e cada recurso, um de cada vez.

A seguir estão os 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, FtpDeleteFilee funções de FtpRenameFile usam o valor de contexto fornecido na chamada para a funçãoInternetConnect.

 

Observação

WinINet não suporta implementações de servidor. Além disso, não deve ser usado a partir de um serviço. Para implementações ou serviços de servidor, use Microsoft Windows HTTP Services (WinHTTP).