Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 31433|Odpowiedź: 5

[Źródło] .net/c# Klasa zadań z async/await

[Skopiuj link]
Opublikowano 20.10.2017 22:32:17 | | |
Klasa zadania

Klasa Task to asynchroniczna abstrakcja operacji udostępniona po .NET 4.0, z pełną ścieżką do System.Threading.Tasks.Task.

Klasa Task służy do reprezentowania operacji asynchronicznych bez wartości zwrotnej, a dla operacji asynchronicznych z wartościami zwracanymi należy użyć podklasy Task klasy Task<TResult>.
Zadania utworzone przez klasę Task są dodawane do puli wątków.

<TResult>Głównymi konstruktorami klasy Task/Task są następujący:


Po utworzeniu zadania można rozpocząć metodą Start():


W rzeczywistym rozwoju statyczna metoda Run() klasy Task lub metoda członkowska StartNew() klasy factory TaskFactory są częściej używane do tworzenia i uruchamiania nowych zadań.

Niektóre popularne metody w klasie Zadania:


słowo kluczowe async/await

C# 5.0 wprowadził słowa kluczowe async i await, co zapewniło lepsze wsparcie dla współbieżności na poziomie językowym.

Async jest używany do oznaczania metod asynchronicznych:
Asynchroniczne słowo kluczowe jest kontekstowym i będzie traktowane jako słowo kluczowe tylko podczas modyfikacji metody i Lambdy, a w innych obszarach traktowane jako identyfikator.
Asynchroniczne słowo kluczowe może oznaczać metody statyczne, ale nie punkty wejścia (metody Main().
Wartość zwracana metody oznaczonej jako async musi być <TResult>Zadanie, Zadanie lub Void.
await służy do oczekiwania na wynik metody asynchronicznej:
Słowo kluczowe oczekuj jest również kontekstowym słowem kluczowym i jest traktowane jako słowo kluczowe tylko w asynchronicznej metodzie tagowanej.
Słowo kluczowe await może być użyte przed metodą asynchroniczną, a Task, i <TResult>Task, aby oczekiwać na zakończenie asynchronicznego wykonania zadania.
Prosta struktura metody asynchronicznej wygląda następująco:
Nie chodzi o to, że metoda jest oznaczona asynchronicznym słowem kluczem, jest to metoda asynchroniczna, a instrukcje pojawiające się bezpośrednio wewnątrz metody asynchronicznej są również wykonywane synchronicznieTreść wykonywana asynchronicznie musi być wykonywana za pomocą klasy Task
W rzeczywistości metoda asynchroniczna, która nie zawiera żadnych instrukcji oczekiwania, zostanie wykonana synchronicznie, po czym kompilator wyda ostrzeżenie.

Prosty przykład, używanie async/await do jednoczesnego wyświetlania treści na ekranie:

Wyjście: (Mono 4.4.0 & ArchLinux x64)

Nie jest trudno zauważyć z powyższego programu, że w asynchronicznej metodzie oznaczonej słowem kluczowym jako asynchroniczne, kod przed użyciem await jest wykonywany synchronicznie, a po wywołaniu await pozostały kod działa asynchronicznie na osobnym wątku.





Poprzedni:fsadf{:1_2:}
Następny:RestSharp a. NET(C#) HTTP helper class component
Opublikowano 01.11.2017 19:57:12 |
Spójrz, spójrz, spójrz
Opublikowano 29.01.2019 09:37:53 |
Długo szukałem informacji o Baidu #async Task Invoke()Znalazłem się na pozycjiPowyższa metoda wykorzystuje asynchroniczne słowo kluczowe do zwrócenia metody Invoke klasy Task, która również rozwiązuje problem wątków. Jaki jest sens całej tej funkcji?
Opublikowano 29.01.2019 21:14:36 |
To naprawdę dobra rzecz i napiszę taki tekst, gdy będę miał czas
Opublikowano 15.02.2019 16:17:22 |
Wynik wyjściowy nie może wyraźnie zobaczyć efektu asynchronicznego wykonania, a wejście asynchroniczne powinno być jednoczesne
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com