Lucian Wischik Senior Program Manager Managed Languages DEVB317 Easy Async for Windows Store Apps in Microsoft Visual C and Microsoft Visual Basic Lucian Wischik Senior Program Manager Managed ID: 590423
Download Presentation The PPT/PDF document "Easy Async for Windows Store Apps in Mic..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Easy Async for Windows Store Apps in Microsoft Visual C# and Microsoft Visual Basic
Lucian WischikSenior Program ManagerManaged Languages
DEV-B317Slide2
Easy Async for Windows Store Apps in Microsoft Visual C# and Microsoft Visual Basic
Lucian WischikSenior Program ManagerManaged Languages
DEV-B317
p
lease wait for the next slide
clicking won’t make it come any fasterSlide3
The Future is the Future
Responsiveness and scalabilityAsync is becoming the
norm
Futures: Modern
abstractions
Details: Different but
similar
.NET Async
Windows Runtime AsyncSlide4
Synchronous vs. Asynchronous
var
data =
DownloadData
(...);
ProcessData
(data);
var
future =
DownloadDataAsync
(...);
future.ContinueWith
(data =>
ProcessData
(data));
DownloadDataAsync
ProcessData
STOP
ProcessData
DownloadDataSlide5
Synchronous vs. Asynchronous
DownloadDataAsync
ProcessData
STOP
ProcessData
DownloadData
STOP
var
data =
DownloadData
(...);
ProcessData
(data);
var
future =
DownloadDataAsync
(...);
future.ContinueWith
(data =>
ProcessData
(data));Slide6
C# and Visual Basic let you
doasynchronous programming
without
callbacksSlide7
Demo
Using await with the Windows RuntimeSlide8
a
wait
makes the rest of your method a callbackSlide9
async
“makes your method asynchronous”lets you put awaits in itSlide10
Awaitables
Task
Task<
TResult
>
Returned from
asyncC# and Visual Basic APIsAlready running
await directlyCan
await multiple timesStore and await later
IAsyncAction
IAsyncOperation
<
TResult
>
Returned from
async
Windows Runtime APIsAlready runningawait directly
Can await multiple timesStore and await laterOr, AsTask and
await laterSlide11
Task-returning vs. void-returning
async Task
Foo
Async
(…);
Can be awaited
“Give back control”Delegate asynchronous workUse for helper methodsUse for library methods
async void
Foo_Click(…);Cannot be awaited“Fire and forget” Start separate independent flow
Use for event handlers
Use to override void methodsSlide12
Demo
Coordinating TasksSlide13
Task
lets you coordinate activitiesSlide14
Task helpers
Yielding control
await
Task.Delay
(5000);
await
Task.Yield();Background running
var
result = await Task.Run(() => { … work … });
Parallel composition
var
winningTask
= await
Task.WhenAny(task1, task2); var
results = await Task.WhenAll(task1, task2);Slide15
Demo
CancellationSlide16
Cancellation and Progress
Pass CancellationToken
to
send
cancellation
Pass
IProgress to receive progress updatesawait FooAsync(…, cancel, progress);
await
FooAsync(…).AsTask(cancel, progress
);Slide17
Windows 8 has taken a big bet on asynchronous APIsSlide18
The await keyword
makes consuming async APIs simpleSlide19
No more callbacks!