WORDS
Task, async och await i C#: Introduktion
I C# finns olika sätt att hantera concurrency, samtidig exekvering. Jag förespråkar Tasks, vilket är ämnet för den här artikelserien. Vi går igenom hur Tasks fungerar och några metoder som man kan använda med dom, och hur syntaxen för async/await ofta underlättar användandet av Tasks. Det finns två huvudsakliga användningsområden för Tasks:
- En uppgift. Något som utförs i bakgrunden.
- Ett framtida värde. En stor beräkning, svar på request eller något annat som tar lång tid.
Man kan använda trådar för samma syften, men Tasks förenklar i många fall. En Task:
- Låser inte tråden med synkrona anrop.
- Använder automatiskt en trådpool.
- Liknar Javascripts promises.
Dom skiljer sig mot trådar:
Tasks kan inte avbrytas: det finns ingen metodAbort. Istället finns enCancellationToken, men enTaskmåste själv bestämma om den vill kontrollera om det ska avbrytas.- En enda
Task-kedja kan köras i många trådar.