Questão de Programação — C Sharp — Quadrix 2025
- Código
- qg596721
- Banca
- Quadrix
- Órgão
- CRC-SP
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E — ERRADO. A afirmação está incorreta porque o C# suporta programação assíncrona nativamente, por meio das palavras-chave async e await, além de oferecer a classe Task e o Task Parallel Library (TPL). Threads são apenas uma das formas de lidar com concorrência, mas não a única — e a programação assíncrona não se confunde com o uso direto de threads.
A programação assíncrona é um paradigma que permite que uma operação demorada (como acesso a banco de dados, chamadas HTTP ou leitura de arquivos) seja executada sem bloquear a thread principal da aplicação. Em vez de ficar esperando a operação terminar, o programa continua executando outras tarefas e, quando a operação é concluída, o fluxo retorna ao ponto de continuação. No C#, isso é feito com os modificadores async e await: um método marcado como async pode usar await para aguardar uma operação assíncrona sem travar a thread. A classe Task representa uma operação assíncrona que pode ser aguardada, e o TPL oferece paralelismo de dados e tarefas.
A confusão entre assíncrono e threads é comum. Threads são unidades de execução que rodam concorrentemente, mas a programação assíncrona não exige a criação de threads: ela pode ser implementada com um único thread, usando técnicas como callbacks, eventos ou o modelo async/await, que aproveita o tempo ocioso da thread para executar outras tarefas. Por exemplo, em uma aplicação web, cada requisição pode ser tratada de forma assíncrona sem criar uma thread por requisição — o que melhora a escalabilidade. O C# também suporta threads (via System.Threading.Thread), mas isso é uma opção, não uma obrigação.
A banca explora exatamente essa confusão: o candidato que sabe que C# tem threads pode achar que a afirmação está correta, mas ela é falsa porque o C# suporta programação assíncrona — e isso é um recurso da linguagem, não uma limitação. A pegadinha está em afirmar que "não suporta" e que "é necessário usar apenas threads", quando na verdade a linguagem oferece mecanismos assíncronos muito mais elegantes e eficientes.
Guarde a distinção: assíncrono é sobre não bloquear a execução; threads é sobre executar em paralelo. O C# oferece ambos, e a programação assíncrona moderna usa async/await, não threads explícitas.
A afirmação é falsa, portanto a alternativa correta é E — Errado. O C# suporta programação assíncrona desde a versão 5.0, com async e await, e a classe Task permite aguardar operações sem bloquear a thread. Threads são uma alternativa, mas não a única — e a programação assíncrona é um recurso nativo da linguagem, amplamente utilizado em aplicações web e desktop.
Na prova, desconfie de afirmações com "apenas", "somente" ou "necessário" — elas costumam ser falsas quando a tecnologia oferece mais de uma abordagem. Aqui, a banca tenta fazer você acreditar que C# não tem suporte a assíncrono, mas a linguagem tem async/await desde 2012. Lembre-se: assíncrono ≠ threads.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg596721