Asynchronous Programming in C# - Part 1

19
Asynchronous Programming in C# - Part 1 Presenter: Vikash Kumar, Mindfire Solutions (28/07/2014)

description

All about asynchronous programming from .NET starting from initial framework to latest version. We will be looking into almost all features from .NET which are related to Asynchronous Programming. This seminar will cover up evolution of asynchronous programming and slowly moving to Task.

Transcript of Asynchronous Programming in C# - Part 1

Page 1: Asynchronous Programming in C# - Part 1

Asynchronous Programming in C# - Part 1

Presenter: Vikash Kumar, Mindfire Solutions (28/07/2014)

Page 2: Asynchronous Programming in C# - Part 1

About MeMCTS-70-515 - Microsoft .NET 4.0, Web App Development

MCP:70-483: MS - Programming in C#

Skills: MVC, Asp.Net WebForms, C#, EntityFramework, OpenAccess, TypeScript, SEO, jQuery, KendoUI, Lucene.Net, Asynchronous programming, Sql Server.

Connect Me:Blog :- http://vikutech.blogspot.in/Twitter :- https://twitter.com/viku85LinkedIn :- http://www.linkedin.com/pub/vikash-kumar/11/4b5/625Google+ :- https://plus.google.com/108754146104237310375

Contact Me:Email :- [email protected] / [email protected] :- mfsi_vikash

Page 3: Asynchronous Programming in C# - Part 1

Agenda What is asynchronous? Asynchronous programming options and history

Thread and ThreadPool Asynchronous Programming Model (APM) Event-based Asynchronous Pattern (EAP) Task– Basics– Exception handling– Relationships

Page 4: Asynchronous Programming in C# - Part 1

What is asynchronous?

Image Source: http://www.webopedia.com/

To do more than one thing at a time.asyn = not with chronos = time

Page 5: Asynchronous Programming in C# - Part 1

Asynchronous programming options and history Thread Asynchronous Programming Model (APM) Event-Based Asynchronous Pattern (EAP) BackgroundWorker Task Task Parallel Library - DataFlow Task Parallel Library – Parallel APIs Thread → APM → EAP → TAP

Page 6: Asynchronous Programming in C# - Part 1

Thread and ThreadPool Basic building block for async programming. Parameterize thread, came with .NET 2.0

Image source:http://johnpaulmorabito.blogspot.in/

Page 7: Asynchronous Programming in C# - Part 1

APM and EAP APM depends upon Begin and End

methods. Callbacks are dependent on IAsyncResult. EAP came with .NET 2.0 which automatically

handles synchronization context. BackgroundWorker is an example of EAP

based programming. EAP can be seen while adding web

reference which automatically creates with proxies classes.

Page 8: Asynchronous Programming in C# - Part 1

APM and EAP

Page 9: Asynchronous Programming in C# - Part 1

Task A task is an abstraction of unit of work to

run asynchronously. Ways to execute: new Task(Speak).Start(),

Task.Factory.StartNew(Speak), Task.Run(Speak)

Use FromAsync when an API has BeginXXX/EndXXX.

Task can be canceled through CancellationToken and checked with ThrowIfCancellationRequested.

IProgress<T> came with 4.5 which can be used to show status

Page 10: Asynchronous Programming in C# - Part 1

Task error handling Task are completed with following state:

Ran to Completion, Canceled and Faulted. Task uses AggregateException to wrap up

any other exception occurs which can be found under inner exception.

AggregateException comes with Flatten method to check all exceptions.

AggregateException also comes with Handle method which accepts predicate to handle errors.

ThrowUnobservedTaskExceptions to configure to shallow exception.

Page 11: Asynchronous Programming in C# - Part 1

Cancellation

FromAsync

Page 12: Asynchronous Programming in C# - Part 1

Progress bar

Exception handling

Page 13: Asynchronous Programming in C# - Part 1

Task Relationships

Task

Task Task Task

Child Tasks

Task Task Task

Chained Task

Page 14: Asynchronous Programming in C# - Part 1

Task Relationships... ContinueWhenXXX can be used to chain

up tasks with TaskContinuationOptions enum for various conditions.

TaskCreationOptions.AttachedToParent is used to create child tasks.

Creating child task will reflect exception in parent task if exception occurs.

Task.Run uses TaskCreationOptions.DenyChildAttach by default which will act as nested task.

Page 15: Asynchronous Programming in C# - Part 1

Task Relationship

Page 16: Asynchronous Programming in C# - Part 1

Presenter: XXXX XXXX, Mindfire Solutions

Question and Answer

Page 17: Asynchronous Programming in C# - Part 1

References Pro Asynchronous Programming with .NET Asynchronous Programming Patterns Asynchronous Programming in .NET: I'll Call

You Back (For definition)

Page 18: Asynchronous Programming in C# - Part 1

Presenter: Vikash Kumar, Mindfire Solutions

Thank you