Kapitel 8. Interop

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Asynchron, parallel, reaktiv - jedes dieser Verfahren hat seinen Platz, aber wie gut funktionieren sie zusammen?

In diesem Kapitel sehen wir uns verschiedene Interop-Szenarien an, in denen du lernst, wie du diese verschiedenen Ansätze kombinieren kannst. Du lernst, dass sie sich gegenseitig ergänzen und nicht miteinander konkurrieren; es gibt kaum Reibungen an den Grenzen, wo ein Ansatz auf den anderen trifft.

8.1 Async Wrapper für "Async" Methoden mit "Completed" Ereignissen

Problem

Dort ist ein älteres asynchrones Muster, das Methoden namens OperationAsync zusammen mit Ereignissen namens OperationCompleted. Du möchtest eine Operation mit dem älteren asynchronen Muster durchführen und await das Ergebnis.

Tipp

Die OperationAsync und OperationCompleted Muster wird das Ereignis-basierte asynchrone Muster (EAP) genannt. Du wirst sie in eine Task-Rückgabemethode verpacken, die dem Task-based Asynchronous Pattern (TAP) folgt.

Lösung

Mit dem Typ TaskCompletionSource<TResult> kannst du Wrapper für asynchrone Operationen erstellen. Der Typ TaskCompletionSource<TResult> steuert eine Task<TResult> und ermöglicht es dir, die Aufgabe zum richtigen Zeitpunkt zu erledigen.

Dieses Beispiel definiert eine Erweiterungsmethode für WebClient, die eine string herunterlädt. Der Typ WebClient definiert DownloadStringAsync und DownloadStringCompleted ...

Get Concurrency in C# Cookbook, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.