Code for Evolution of asynchronous programming on .NET session
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
WindowsApplication1
WindowsApplication2
WindowsApplication3
WindowsApplication3b
WindowsApplication3c
WindowsApplication4
WindowsApplication5
WindowsApplication6
WindowsApplication6b
WindowsApplication7
WindowsApplication7b
WindowsFormsApplication1
WindowsFormsApplication2
WindowsFormsApplication3
WindowsFormsApplication3b
WindowsFormsApplication3c
WindowsFormsApplication4
WindowsFormsApplication5
WindowsFormsApplication6
WindowsFormsApplication6b
WindowsFormsApplication7
WindowsFormsApplication7b
.gitattributes
.gitignore
dotNetEvolution.sln
readme.md

readme.md

VB versions of projects are even-numbered. ##.NET 1.1:## #01 WindowsFormsApplication# Introduces the sample application, asynchronous methods (Begin/End), APM Explicit delegates (new DelegateType(...) Control.InvokeRequired explanation, detail StreamHelper #02 WindowsApplication# Introduces the sample application, asynchronous methods (Begin/End), APM

##.NET 2.0:## #03 WindowsFormsApplication# Introduction of partial types, anoymous methods (anoymous delegates) #04 WindowsApplication# only partial types, VB doesn't get anonymous methods yet #05 WindowsFormsApplication# Generics in GetScriptBodies, GetScriptBodies becomes iterator method #05b WindowsFormsApplication# introduce progress and cancellation, using WebClient instead of WebRequest, introduction of EAP and how Webclient implements EAP #05c WindowsFormsApplication# Progress and cancellation with BackgroundWorker as example (not optimal use of BG, but correlates to previous examples), "fake" progress, lazy code monkey #06 WindowsApplication# VB version of 05, sans iterator methods: VB doesn't get this in .NET 2.0 #06b WindowsApplication# VB version of 05b #06c WindowsApplication# VB version of 05c

##.NET 3.0:## #07 WindowsFormsApplication# var, problems with foreach(Match..., lambdas, use of expression lambda in BeginGetResponse and statement lambda elsewhere. encapsulation of asynchronous "callbacks" within the method that makes the async call. Extension methods and StreamExtensions #08 WindowsApplication# VB version of 07 #09 WindowsFormsApplication# LINQ in GetScriptBodies #10 WindowsApplication# VB version of 09

##.NET 4.0## #11 WindowsFormsApplication# Task and Task Parallel Library (TPL), TaskScheduler and FromCurrentSynchronizationContext, no need for InvokeRequired/BeginInvoke, more abstract code and can be used in WPF, etc. EnableButton gone #11b WindowsFormsApplication# Cancellation and progress with TPL, "fake" progress, nothing particular to TPL for progress, detail cancellation token source and token and how only token is shared--by value--across threads #12 WindowsApplication# VB version of 11 #12b WindowsApplication# VB version of 11 b

##.NET 4.5## #13 WindowsFormsApplication# async/await, detail lines after await are "continuations": compare to ContinueWith code, detail how much less code there is from 01, no need for stream extension, use of "using"... detail automatic marshalling to UI thread #13b WindowsFormsApplication# progress with async/await. CancellationTokenSource etc and now IProgress and Progress implementation. #14 WindowsApplication# VB version of 13 #14b WindowsApplication# VB version of 13b