I was excited to see that Stephen Cleary had sessions at CodeMash. He’s one of the C# Advent carolers! The younger Sadukelet said “Mama – that was 4 Async Tasks?!” 😁 Yes, sir, 4 Async Tasks is speaking at CodeMash.
Whenever I see Stephen’s name on a conference line-up, I know that there are going to be some deep or harder topics presented and in a way that the average developer can understand it. Stephen takes complex topics and demystifies them. When I saw async and await, I had to see what this was about – as I’ve been dealing with async stuff since the late 90s, in the wee days of AJAX calls. So it’s been fun watching async evolve!
There Is No Thread
While talking about asynchronous, the phrases of concurrency, multithreaded, and parallel came up. Then, there were talks of threads. However, when dealing with asynchrony, we’re looking at concurrency without threads. Wait… no threads?! Stephen has a blog post from 2013 that is still relevant today: There Is No Thread. 🤯
Async/Await in C#
We officially got async in C# as part of .NET 5. Stephen recommended Jon Skeet’s Eduasync series as a guide for when we aren’t at the talk. During the talk, though, Stephen talked of how
async turns a method into a state machine and enables the
await keyword. He also mentioned that it is similar to how a
yield works. With regards to Task in C#, it is nothing more than an object that represent the execution of an async method without a return result. Task<TResult> represents the execution with a return result.
The Archaelogy of Async 👵🏻
It was this part of Stephen’s talk that I felt old. He talked about the history of async. Check this out:
This got me thinking. With Events and event-driven development, this made me think of some of the things we did in our WebForms days.
And Async/Await is where we are today with asynchronous execution. Did you know “await” is “asynchronous wait”? The things I learned in this session!
And the A/V went 💥
During the rest of the presentation, Stephen’s A/V went out. Rather than stumble through A/V debugging, Stephen continued the talk without his slides. He handled it gracefully and masterfully.
I wish I could’ve stayed to see how it ended. Unfortunately, I had to step out to deal with another community issue. However, if you ever need to try to understand async/await and have an opportunity to catch this session, do it!