.NET

24 nov, 2021

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

Publicidade

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.