Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 31433|Antwort: 5

[Quelle] .net/c# Task-Klasse mit async/await

[Link kopieren]
Veröffentlicht am 20.10.2017 22:32:17 | | |
Aufgabenklasse

Die Task-Klasse ist eine asynchrone Operationsabstraktion, die nach .NET 4.0 bereitgestellt wurde, mit dem vollständigen Pfad zu System.Threading.Tasks.Task.

Die Task-Klasse wird verwendet, um asynchrone Operationen ohne Rückgabewert darzustellen, und für asynchrone Operationen mit Rückgabewerten sollte die Unterklasse Task der Task-Klasse verwendet werden<TResult>.
Aufgaben, die von der Task-Klasse erstellt werden, werden dem Threadpool hinzugefügt.

Die <TResult>Hauptkonstruktoren der Task/Task-Klasse sind wie folgt:


Nach der Erstellung kann die Aufgabe mit der Start()-Methode gestartet werden:


In der tatsächlichen Entwicklung werden die statische Methode Run() der Task-Klasse oder die Mitgliedsmethode StartNew() der Factory-Klasse TaskFactory häufiger verwendet, um neue Aufgaben zu erstellen und zu starten.

Einige gängige Methoden in der Task-Klasse:


async/await-Schlüsselwort

C# 5.0 führte die Schlüsselwörter async und await ein, was eine bessere Unterstützung für Nebenläufigkeit auf Sprachebene bot.

Async wird verwendet, um asynkrone Methoden zu kennzeichnen:
Das asynchrone Schlüsselwort ist ein kontextuelles Schlüsselwort und wird nur als Schlüsselwort behandelt, wenn eine Methode und Lambda modifiziert werden, und in anderen Bereichen als Identifikator.
Das asynchrone Schlüsselwort kann statische Methoden markieren, aber keine Einstiegspunkte (Main()-Methoden).
Der Rückgabewert der mit asynchron markierten Methode muss <TResult>Task, Task oder void sein.
await wird verwendet, um auf das Ergebnis der asynchronen Methode zu warten:
Das await-Schlüsselwort ist ebenfalls ein kontextuelles Schlüsselwort und wird nur in der asynchron getaggten Methode als Schlüsselwort betrachtet.
Das Schlüsselwort await kann vor der asynchronen Methode und Task und Task verwendet werden<TResult>, um auf das Ende der asynchronen Task-Ausführung zu warten.
Eine einfache asynkrone Methodenstruktur ist wie folgt:
Es ist nicht so, dass die Methode mit dem asynchronen Schlüsselwort markiert ist, sondern eine asynchrone Methode, und die Anweisungen, die direkt in der asynchronen Methode erscheinen, werden ebenfalls synchron ausgeführtInhalte, die asynchron ausgeführt werden, müssen mit der Task-Klasse ausgeführt werden.
Tatsächlich wird eine asynchrone Methode, die keine await-Anweisungen enthält, synchron ausgeführt, woraufhin der Compiler eine Warnung ausgibt.

Ein einfaches Beispiel: Async/await, um Inhalte gleichzeitig auf dem Bildschirm auszugeben:

Ausgabe: (Mono 4.4.0 & ArchLinux x64)

Es ist nicht schwer anhand des obigen Programms zu erkennen, dass in der asynchron markierten asynchronen Schlüsselwort-Methode der Code vor der Verwendung von await synchron ausgeführt wird und nach dem Aufruf von await der restliche Code asynchron auf einem separaten Thread ausgeführt wird.





Vorhergehend:fsadf{:1_2:}
Nächster:RestSharp a. NET(C#) HTTP Helper-Klassenkomponente
Veröffentlicht am 01.11.2017 19:57:12 |
Schau mal, schau mal, schau mal
Veröffentlicht am 29.01.2019 09:37:53 |
Ich habe lange auf Baidu gesucht #async Task Invoke()Ich fand mich stehend wieder.Die obige Methode verwendet das asynchrone Schlüsselwort, um eine Invoke-Methode der Task-Klasse zurückzugeben, was auch das Thread-Problem löst – was bedeutet diese ganze Funktion?
Veröffentlicht am 29.01.2019 21:14:36 |
Das ist wirklich etwas Gutes, und ich werde so eine Meldung schreiben, wenn ich Zeit habe
Veröffentlicht am 15.02.2019 16:17:22 |
Das Ausgabeergebnis kann den Effekt der asynchronen Ausführung nicht klar erkennen, und asynchrone Eingaben sollten gleichzeitig erfolgen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com