Download presentation
Presentation is loading. Please wait.
1
Asynchronous I/O in .NET
2
What is Async I/O? Executing I/O in the background, allowing foreground work to proceed I/O executes and completes in parallel with, and independent of, the application that initiated it Called “Overlapped I/O” in Win32
3
What is Async I/O? Synchronous I/O Asynchronous I/O Start I/O Blocked
Process Asynchronous I/O Start I/O Blocked Process Background I/O Background I/O
4
Why use Async I/O? Scalability Throughput Threads are expensive
Non-blocking UI Silverlight
5
Why not Async I/O? Complexity Debuggability Unnecessary?
6
Asynchronous Programming Model
Standard pattern for async work in .NET 3.5 Convert: string DoOperation(int param1, double param2); Into: IAsyncResult BeginDoOperation(int param1, double param2, AsyncCallback callback, object state); string EndDoOperation(IAsyncResult asyncResult); In WCF, use [OperationContract(AsyncPattern = true)]
7
Asynchronous Programming Model
Four ways to complete asynchronous call: Supply an AsyncCallback Poll IAsyncResult.IsCompleted Wait on IAsyncResult.AsyncWaitHandle (blocking) Call EndXxx method (blocking) Always call EndXxx method!
8
Asynchronous I/O with APM in .NET 3.5
Demo
9
Event-Based Pattern Introduced in .NET 2.0 to simplify APM
E.g., PictureBox, SoundPlayer, WebClient MethodAsync method MethodCompleted event CancelAsync method Uses AsyncOperationManager internally
10
Task Parallel Library New framework for parallel and async work in .NET 4.0 Convert: string DoOperation(int param1, double param2); Into: Task<string> DoOperation(int param1, double param2);
11
Task Parallel Library Two ways to complete asynchronous call:
ContinueWith Call Task<T>.Result or Task.Wait (blocking)
12
Task Parallel Library Wrap existing APM method IAsyncResult BeginDoOperation(int param1, double param2, AsyncCallback callback, object state); string EndDoOperation(IAsyncResult asyncResult); with FromAsync: Task<string>.Factory.FromAsync(BeginDoOperation, EndDoOperation, int param1, double param2, object state);
13
Asynchronous I/O with TPL in .NET 4.0
Demo
14
Where to? ASP.NET Asynchronous Pages ( IHttpAsyncHandler ( F# Async Workflows ( Reactive Extensions for .NET ( Axum (
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.