Kurs i asynkron programmering i C# och .NET

Lär dig hur trådar, tasks och async/await fungerar i .NET, och hur du skriver asynkron kod som är korrekt och snabb.

Tillbaka till kurserna

Den här tvådagarskursen är för erfarna C#- och .NET-utvecklare. Den tar upp asynkron programmering från trådar, tasks och async/await till task schedulers och synchronization contexts.

Det här lär du dig

  1. Hur trådar, thread pool och tasks fungerar under async/await.
  2. Async/await, cancellation och continuations, genom mycket praktisk kodning.
  3. Hur du undviker vanliga problem som deadlocks, thread starvation och unobserved exceptions.
  4. Avancerade tekniker som egna task schedulers, synchronization contexts och ValueTasks.

Längd
2 hela dagar eller 4 halvdagar

Nivå
Avancerad

Språk
Kursen hålls på svenska eller engelska.

Varför lära sig asynkron programmering?

Det mesta av den .NET-kod du arbetar med i dag är asynkron. ASP.NET Core, Entity Framework Core, HttpClient och de flesta moderna bibliotek bygger på Task, async och await. Det är enkelt att anropa dem, men misstag som deadlocks, blockerade trådar och exceptions som går förlorade är vanliga, och de syns ofta först under hög belastning i produktion. För att undvika dem behöver du förstå vad som händer under ytan.

Så går kursen till

Kursen har gott om praktiska övningar, så du övar på varje del direkt. Efteråt vet du hur du använder asynkron kod för att göra dina applikationer effektivare, mer skalbara och mer responsiva.

Vem är kursen för?

Erfarna C#-utvecklare som vill förstå hur asynkron kod fungerar och skriva den korrekt i sina applikationer.

Förkunskaper

Minst ett års erfarenhet som C#-utvecklare och en god förståelse för C#, inklusive generics, lambdas och LINQ. Du behöver ingen erfarenhet av parallell eller asynkron programmering. Kursen är uppdaterad för .NET 10 och C# 14.

Tore Nestenius föreläser på konferensen Øredev i Malmö, november 2024. Tore Nestenius föreläser om autentisering hos Copenhagen .NET User Group

Agenda

Under kursen går vi igenom följande ämnen.

1. Introduktion, processer och trådar

  • Synkron och asynkron programmering
  • Processer
  • Trådar

2. Thread pool

  • Kostnaden för att skapa trådar
  • Worker threads och I/O-trådar
  • När man inte ska använda thread pool

3. Tasks

  • Skapa tasks
  • Returnera data från en task
  • Tasks eller trådar?

4. Vänta på tasks

  • WaitAll jämfört med WaitAny
  • WhenAll jämfört med WhenAny

5. Felhantering i asynkron kod

  • Exceptions i trådar
  • Exceptions i tasks

6. Avbryta tasks

  • Cancellation Token Source
  • IsCancellationRequested
  • ThrowIfCancellationRequested
  • Cancellation tokens
  • Kombinera cancellation tokens

7. Continuations

  • ContinueWith
  • TaskContinuationOptions

8. Async och await

  • Metoder med async
  • Async state machine
  • Nyckelordet await
  • Returnera data från metoder med async
  • Async hela vägen
  • Async lambdas
  • Optimera async/await
  • GetAwaiter().GetResult()
  • WaitAsync

9. Task schedulers

  • ThreadPoolTaskScheduler
  • Default jämfört med current task scheduler
  • Skapa egna task schedulers
  • ExclusiveScheduler jämfört med ConcurrentScheduler

10. Felhantering i async

  • Exceptions i metoder med async
  • Släppa fram exceptions
  • Task schedulers och UnobservedTaskException

11. Synchronization contexts

  • SynchronizationContext jämfört med TaskScheduler
  • ThreadPoolTaskScheduler
  • DispatcherSynchronizationContext
  • WindowsFormsSynchronizationContext

12. ConfigureAwait

  • Undvika deadlocks
  • Fånga synchronization context
  • ConfigureAwaitOptions

13. Value tasks

  • Tasks jämfört med ValueTasks
  • Optimera metoder med async
  • Minska allokeringar

Vanliga frågor

Varför ska jag lära mig asynkron programmering i C#?

De flesta moderna .NET-bibliotek bygger på Task, async och await. När du förstår asynkron programmering kan du bygga responsiva appar, undvika thread starvation och deadlocks, och skriva kod som skalar, för webb, desktop och services.

Vad tar kursen upp?

Asynkron programmering från grunden: hur arbete körs på trådar, hur thread pool i .NET beter sig, hur Task fungerar och hur du skriver korrekt, effektiv asynkron kod med async/await, cancellation och bra mönster.

Varför går du igenom trådar om vi mest använder async/await?

Du skapar sällan trådar för hand i det dagliga arbetet med .NET, men all asynkron kod körs till slut på trådar. När du förstår trådar och thread pool blir det lättare att resonera om prestanda, responsivitet och blockerande kod, och att se varför vissa asynkrona buggar uppstår.

Vad tas inte upp på kursen?

För att hålla fokus tar jag inte upp locks, concurrent collections, TPL Dataflow, Channels eller Pipelines. De ämnena inom concurrency skulle behöva en egen kurs.

Passar kursen för nybörjare?

Nej, det här är ingen nybörjarkurs. Du bör vara bekväm med modern C#, inklusive lambdas och LINQ. Du behöver ingen erfarenhet av asynkron eller parallell programmering, men det hjälper om du har sett Task och async/await tidigare.

Vilken version av .NET används?

Jag använder .NET 10 och Visual Studio 2026. Det du lär dig gäller även tidigare versioner av .NET, även om vissa API:er och funktioner för diagnostik kan skilja sig.

Vad gör jag om jag använder en äldre version som .NET 6–9?

Du kan ändå delta. Den grundläggande modellen för asynkronitet (Task, async/await, cancellation, continuations) är densamma i .NET 6–9. Jag pekar ut de få ställen där .NET 10 har nyare API:er eller bättre verktyg.

Är kursen live eller inspelad?

Kursen är lärarledd och den spelas inte in. Jag håller den på plats eller online, oftast i Zoom eller Teams. Du kan ställa frågor hela tiden och få feedback under övningarna.

Hur mycket kodning ingår?

Mer än hälften av kursen är praktisk kodning, med övningar i varje modul. De börjar på medelnivå och blir svårare, så att du själv stöter på de vanliga fallgroparna och lär dig mönster som du kan använda direkt i dina egna .NET-applikationer.

Behöver jag några särskilda verktyg?

Du behöver en utvecklingsmiljö för .NET som kan köra .NET 10 (Visual Studio 2026 eller en annan IDE för .NET). Jag skickar instruktioner före kursen.

Får jag material och exempelkod efteråt?

Ja. Du får presentationen och övningarna som PDF, och de fullständiga lösningarna med färdig kod, så att du kan gå igenom och öva efter kursen.

Hur aktuell är kursen?

Jag underhåller den hela tiden. Jag uppdaterar innehållet för nya funktioner och arbetssätt i .NET, och förbättrar övningarna och materialet efter varje tillfälle utifrån deltagarnas feedback.

Erbjuder du utbildning på plats och på distans?

Ja. Jag erbjuder både utbildning på plats (i klassrum) och live online.

Erbjuder du utbildning på svenska och engelska?

Ja. Jag kan undervisa på svenska eller engelska. Materialet är på engelska.

Håller du halvdagar?

På plats kör jag oftast hela dagar. På distans går det att ordna halva eller hela dagar.

Håller du webbinarier och kortare föredrag?

Ja. Se min sida om föredrag för aktuella alternativ och ämnen.

Kan kursen anpassas för teamet?

Ja. För privata kurser åt ett team kan jag anpassa agendan och övningarna efter teamets kodbas, teknikstack och problemområden. Vill du veta mer? Boka ett förutsättningslöst möte.

Om utbildaren

Jag heter Tore Nestenius. Jag undervisar på plats och på distans, både direkt åt företag och via utbildningsföretag i Europa. Lite om min bakgrund:

  • Jag har utbildat utvecklare sedan 2010 och hållit flera hundra kurser och föredrag.
  • Jag tar fram, underhåller och håller varje kurs själv, och förbättrar den efter varje tillfälle.
  • Jag är Microsoft .NET MVP.
  • Jag var med och grundade Edument, ett svenskt utbildnings- och konsultföretag, där jag var CTO, utvecklare och utbildare.
  • Jag arbetar som senior .NET-konsult, så jag undervisar utifrån verkliga projekt.
  • Jag har arbetat med .NET och C# sedan 2002.
  • Jag har certifieringarna Azure AZ-204 och AZ-900.
  • Jag var med och grundade användargruppen .NET Skåne.

Följ mig

Följ mig på LinkedIn för att få mina senaste uppdateringar om blogginlägg, kommande föredrag, webbinarier och mer.

Tore Nestenius föreläser hos användargruppen .NET Skåne i Malmö i december 2024 om att bygga om koncepten Task och ThreadPool i .NET. Tore Nestenius profil som Microsoft MVP

Hör av dig

Kontakt