Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

Asynchrone Programmiermodelle by Mind Map: Asynchrone
Programmiermodelle
0.0 stars - reviews range from 0 to 5

Asynchrone Programmiermodelle

Window Runtime

Rückgabewert der WinRT-API

IAsyncOperation<T>

IAsyncAction

.StartAsTask()

Asynchron wird zur Norm

Libraries werden verstärkt um Async-Methoden erweitert

UI-Thread freigeben, für das längere, bessere und ruckelfreie durchsuchen der Bauklötzchen ;-)

Rückgabe

Task, Kontrollierbar, für Hilfsmethoden und Bibliotheken

void, "Fire and Forget", Event-Handler, override void-Methoden

.NET Framework

Rückgabewert C#/VB.NET

Task<T>, Yielding, Task.Delay(ms), Yield(), Background, await Task.Run(()=> {...});, Parallel, await Task.WhenAny(t1,t2), await Task.WhenAll(t1,t2)

Asynchrone Methoden mit

Callbacks, Code Inside out, Asynchrone Methoden in Callback State machine transformieren, Transformation, await -> ContinueWith, Heap-allocated state machine

Abbruch mit, CancellationToken, CancellationTokenSource cts, cts.Token, als Parameter in Async Methode, OperationCanceledException

Fortschritt, IProgress

async, Rückgabewert der Methodensignatur muss vom Typ Task<T> sein, Wrapper, return-Wert muss nur T sein, async Task<File> GetFileAsync() { //await do something; return File; }, macht die Methode Asynchron

await, Nicht in catch/finally verwenden, unter yield-Kontrolle, aufgerufene Methoden benötigen "awaiter pattern", übernimmt das Callback

Vorteile

Vereinfachter Code, liest sich wie synchroner Code

Bessere Fehlerbehandlung

Herausforderungen

Overhead berücksichtigen, Gleiche Regeln wie bei der TPL, kleine Einheiten lohnen sich nicht immer, zuerst nachdenken, Kosten, Hierarchieaufrufe von div. Methoden, Garbage Collection, unnötige lokale Variablen und Strukturen in asynchronen Methoden vermeiden, viele Objekte, grosse Objekte, awaits minimieren, statt await t1; await t2; besser await Task.WhenAll(t1, t2);, Performanceverbesserungen minimal, aber besseres Exception Handling

Synchronisation, WindowsFormSyncronisationContext, Control.BeginINvoke, DispatcherSynchronizationContext, Dispatcher.BeginInvoke, AspNetSynchronizationContext, await, fährt auf aktuellen SynchronisationContext weiter, Auf Library-Ebene nicht empfohlen, Beinflussbar mit, Task.ConfigureAwait false, bessere Performance, statt await t; besser await t.ConfigureAwait(continueOnCapturedContext:false), default true, Auf Anwendungsebene optimal

Deadlook vermeiden

Javascript

verwendbar mit C#

Referenzierung von C#-Projekten in Javascript möglich

Promises

Async-Methoden sind automatisch promises, Weiterverarbeitung mit .then, .then(function (result) { //code für Darstellung; });

Alternativen

node, node-fibers, bald node.js native

tame.js

streamlinejs

Herausforderung, Wildwuchs begegnen

Ressourcen

MSDN Async

build 11

Future C#/VB.NET

The zen of async

Slides ASP.NET apps with async

Async in Win 8