• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin
 

C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin

on

  • 3,918 views

Fast, fluid, instant-gratification apps are a must for mobile and C# async makes this much easier to accomplish. ...

Fast, fluid, instant-gratification apps are a must for mobile and C# async makes this much easier to accomplish.

Slides are from the Xamarin CTO and cofounder Miguel de Icaza to understand how and why you should use async for your mobile apps.

Statistics

Views

Total Views
3,918
Views on SlideShare
3,914
Embed Views
4

Actions

Likes
4
Downloads
75
Comments
0

1 Embed 4

https://twitter.com 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin C# Async on iOS and Android - Miguel de Icaza, CTO of Xamarin Presentation Transcript

    • C# Async on iOS and Android Miguel de Icaza, CTO @migueldeicaza
    • C# 5.0 Async on iOS and Android • Just released our C# 5 compiler – Async programming • Support both .NET Base Class Libraries Async • Async-ready APIs for iOS and Android
    • Asynchronous Programming Desire to build responsive applications
    • Fluid Uis allows for 60 fps 16m 32ms 64ms
    • Respond to user input
    • Responding to Input Get events Dispatch Update display
    • Get events Dispatch Update display
    • C# and Lambdas • They add a whole level of sanity • Shared state across lambdas – Compiler does the heavy lifting • Requires all lambdas to share a scope
    • Events: Some idioms
    • Perform Long-Running Operations
    • Long-running tasks • Background threads • Setup your own handshake protocol • Various idioms available
    • Slow file system or database access
    • Network access
    • More callbacks Get events Dispatch Update display
    • Get events Dispatch Update display DB Net
    • Fluid Uis allows for 60 fps 16m 32ms 64ms
    • Callback Hell
    • Just the other day
    • Callback Hell
    • Problems with callbacks • Control flow is difficult – Achieved by choosing what to call next – Tracking state across callbacks • Updating code is cumbersome – Error prone • Error reporting is bolted on the basic framework – Poor, and recovery is typically obnoxious, or non-existent
    • Go To Statement Considered Harmful “our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible.” – Edsger W Dijkstra
    • How did we cope with GoTo? • New idioms – Structured Programming • Better languages – We had the compiler do the work for us
    • Callback Hell
    • C# Async – The Calm after the Storm
    • Evolution: Tasks • Reasoning about background operations – Task and Task<T> types • They encapsulate a unit of work, and have: – State: running, finished, cancelled – Result – Exceptions thrown (if any)
    • Thinking with Tasks • Many useful operations: – Wait: Task.WaitAny (t1, t2, t3) – Wait: Task.WaitAll (t1, t2, t3) – Chain: task1.ContinueWith (task2); – Wrap: Task.WhenAny (t1, t2, t3); – Wrap: Task.WhenAll (t1, t2, t3);
    • Writing beautiful code
    • ShowAlert – creating your own
    • With UIKit Animation
    • Async Support • Base Class Libraries: – Expect all the standard Async APIs from .NET BCL – Coverage is .NET 4.5 Complete for BCL • More Async Sources: – Xamarin.iOS: 174 – Xamarin.Android: 337 – Xamarin.Mobile – Xamarin Component Store
    • What is available as Async? • Simple Rule: – Any API that would take more than 50ms to run