Dev (Back & Front)ARTIGO

Como utilizar o CancellationToken em uma aplicação .NET Core

Como utilizar o CancellationToken em uma aplicação .NET Core
Imagem: Thiago Adriano

O foco desse artigo será demonstrar como utilizar o CancellationToken em uma aplicação .NET Core, através de um exemplo rápido e prático.

Bom, imagine o seguinte cenário: Você tem uma API que retorna uma lista de um conteudo X.

Até aqui um cenário normal do nosso dia a dia correto?

Indo para parte do código, eu estou utilizando a controller WeatherForecastController, que é criada através de um template do .NET.

Eu fiz alguns ajustes nela para logar inicio do request, final do request e um Task.Delay de 15 segundos (sim é um tempo grande para que possamos ver os logs), para simular uma pesquisa em uma banco de dados que vai retornar os dados em result.

Executando esta aplicação, nós temos o seguinte resultado na console do projeto:

Até aqui tudo normal né?

Agora, caso um usuário X pense que a sua aplicação esta um pouco lenta e precione algumas vezes o F5 no navegador? O que aconteceria com o primeiro request e com os novos ?

Para entender esse fluxo melhor, vamos alterar o código adicionando CancellationToken:

E executando o código novamente nós teriamos o seguinte resultado:

Exatamente isso que você pode ver na imagem acima, a sua aplicação vai processar todos requests do usuário como novos e toda vez que o usuário precionar o F5 para atualizar a página, a sua aplicação vai interpretar como uma nova requisição.

Para resolver esse problema nós podemos utilizar o cancellationToken.

Adicionando ele no nosso exemplo anterior, nós teriamos o seguinte resultado:

Como você pode ver na imagem acima, quando um usuário atualizar a página será gerada uma exception cancelando a requisição anterior criando uma nova requisição.

Com essa implementação nós podemos tratar a exception gerada pelo novo request, evitando duplicação de registros ou outros tipos de problemas no momento de criar, atualizar ou deletar alguma informação através de uma nova request.

Bom, a ideia desse post era de ser algo rápido e pratico demostrando a importancia da utilização do CancellationToken.

Espero que tenham gostado e até um próximo artigo pessoal.

Thiago AdrianoAutor

Microsoft (MVP), atualmente trabalha como Arquiteto de Software para TV Bandeirantes. Nesses últimos anos, focou nas tecnologias criadas pela Microsoft, mas sempre esteve antenado para as novas tecnologias que estão surgindo no mercado. Em um breve resumo, é uma pessoa apaixonada pelo que faz, tem a sua profissão como hobby.

Ver perfil