Programação assíncrona (aplicativos do Tempo de Execução do Windows)

Programação assíncrona (aplicativos do Tempo de Execução do Windows)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Usar a programação assíncrona permite que seu aplicativo permaneça responsivo quando ele realiza trabalhos que podem levar uma grande quantidade de tempo. Por exemplo, um aplicativo que baixa conteúdo da Internet pode passar diversos segundos aguardando a chegada do conteúdo. Se você usar um método síncrono no thread de IU para recuperar o conteúdo, o aplicativo ficará bloqueado até que o método retorne. O aplicativo não responderá à interação do usuário e, como ele parecerá não responsivo, o usuário poderá ficar frustrado. Uma maneira muito melhor é usar a programação assíncrona, na qual o aplicativo continua a ser executado e a responder à IU enquanto aguarda a conclusão de uma operação.

Nos métodos que podem levar mais tempo para serem concluídos, a programação assíncrona é a norma e não a exceção no Tempo de Execução do Windows. JavaScript, C#, Visual Basic e C++/CX oferecem suporte de linguagem para os métodos assíncronos.

Programação assíncrona no Tempo de Execução do Windows

Muitos recursos do Tempo de Execução do Windows como as APIs MediaCapture e StorageFile são mostrados como APIs assíncronas. Por convenção, os nomes das APIs assíncronas terminam com "Async" para indicar que parte de sua execução poderá acontecer após a API ter sido invocada.

Quando você usa APIs assíncronas em seu aplicativo do Tempo de Execução do Windows, seu código faz chamadas desbloqueadas de forma consistente. Quando você implementa esses padrões assíncronos em suas definições de API, os chamadores reconhecem e usam seu código de forma previsível.

Aqui encontram-se algumas tarefas comuns que requerem a chamada de APIs assíncronas do Tempo de Execução do Windows.

  • Exibição de uma caixa de diálogo de mensagem

  • Trabalhar com o arquivo do sistema, exibindo um seletor de arquivos

  • Envio e recebimento de dados de e para a Internet

  • Usando soquetes, fluxos, conectividade

  • Trabalhando com compromissos, contatos, calendário

  • Trabalhar com tipos de arquivos como abrir arquivos em formato PDF (Portable Document Format) ou decodificar formatos de imagem ou mídia

  • Interagir com um dispositivo ou serviço

Com as APIs assíncronas do Tempo de Execução do Windows, você não precisa gerenciar threads de forma explícita ou interagir diretamente com a implementação subjacente.

Cada linguagem de programação dá suporte ao padrão assíncrono para o Tempo de Execução do Windows do seu próprio jeito:

Linguagem de programaçãoRepresentação assíncrona
JavaScript promise object, then function
C# Palavra-chave async, operador await
Visual Basic Palavra-chave Async, operador Await
C++/CXtask class, .then method

 

Padrões assíncronos em aplicativos do Tempo de Execução do Windows em JavaScript

No JavaScript, a programação assíncrona segue o padrão proposto Common JS Promises/A ao ter métodos assíncronos retornando objetos promise. Os promises são usados tanto no Tempo de Execução do Windows quanto na Biblioteca do Windows para JavaScript.

Um objeto promise representa um valor que será preenchido no futuro. No Tempo de Execução do Windows, você obtém um objeto promise de uma função de fábrica, que, por convenção, tem um nome que termina com "Async".

Em muitos casos, chamar uma função assíncrona é quase tão simples quanto chamar uma função convencional. A diferença é que você usa o método then ou done para atribuir os manipuladores a resultados ou erros e para começar a operação.

Padrões assíncronos em aplicativos do Tempo de Execução do Windows em C# e Visual Basic

Um segmento típico de código gravado em C# ou em Visual Basic é executado de forma síncrona. Isso significa que, quando você executa uma linha, ela termina antes da execução da próxima linha. Havia modelos de programação Microsoft .NET anteriores para execução assíncrona, porém, o código resultante tende a enfatizar a mecânica de execução do código assíncrono em vez de focar na tarefa que o código está tentando realizar. Os compiladores do Tempo de Execução do Windows, do .NET framework, e do C# Visual Basic adicionaram recursos que reduzem a mecânica assíncrona fora do seu código. Para .NET e o Tempo de Execução do Windows você pode gravar o código assíncrono que focaliza o que o seu código faz em vez de como e quando fazê-lo. Seu código assíncrono parecerá razoavelmente similar ao código síncrono. Para saber mais, veja Guia de início rápido: chamando APIs assíncronas em C# ou Visual Basic.

Padrões assíncronos em aplicativos do Tempo de Execução do Windows em C++

No C++/CX, a programação assíncrona se baseia na task class e no seu then method. A sintaxe é semelhante à promises do JavaScript. A classe task class e seus tipos relacionados também oferecem a capacidade do cancelamento e o gerenciamento do contexto do thread. Para saber mais, veja Programação assíncrona em C++.

A create_async function dá suporte para a produção de APIs assíncronas que podem ser consumidas por JavaScript ou por qualquer outra linguagem que dê suporte ao Tempo de Execução do Windows. Para obter mais informações, veja Criando operações assíncronas em C++.

Tópicos relacionados

Programação assíncrona em JavaScript
Início rápido: chamando APIs assíncronas no Visual Basic ou C#
Programação assíncrona com Async e Await (C# e Visual Basic)
Cenários de recursos de exemplo de Reversi: código assíncrono

 

 

Mostrar:
© 2017 Microsoft